Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [resolu] Variable $action

Posted by info2012 on 07/08/2014 12:36

Bonjour,

J'utilise jelix 1.5.2 et les controleurs crud.

Je n'arrive pas à utiliser une action qui contienne un id (pour réafficher une page suite à une validation de formulaire), j'ai fait de nombreux essais mais rien fonctionne:

Je vous montre celui qui ressemble le plus à la doc:

$action = 'adminmetabolites~deriver:editupdate' , array('id'=>'16')  ;

Merci beaucoup.

  [Opened] Variable $action

Reply #1 Posted by foxmask on 07/08/2014 13:20

Bonjour,

il faudrait nous montrer plus le code qu'il y a autour, comme par exemple le fonction qui contient cette action. Voire meme la classe entiere etc. Là on manque de "matiere"

Cordialement.


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] Variable $action

Reply #2 Posted by laurentj on 07/08/2014 13:31

Surtout que l'exemple indiqué n'est pas bon syntaxiquement au niveau PHP ;-)

Plutôt un truc comme ça ?

$urlAction = jUrl::get('adminmetabolites~deriver:editupdate' , array('id'=>'16')) ;

  [Opened] Re: Variable $action

Reply #3 Posted by info2012 on 07/08/2014 14:42

Bonjour,

Merci pour vos réponses et excusez moi du manque de précisions. En fait il s'agit de la gestion d'un table de clés étrangères (relation m,n)

A la modif d'une des lignes, je donne à l'internaute la possibilité de rechercher les enregistrements déjà effectués via un formulaire qui se trouve dans le template edit, afin d'éviter de mettre des listes déroulantes trop longues. Voilà le formulaire du template:

<form action="{formurl $action}">

<input name="id_deriver" type="hidden" value="{$id}" />


<fieldset>
   <legend>{@adminmetabolites~crud.legend.search@}</legend>
    
   <div>
	<label>{@adminmetabolites~crud.cherche.metabolite@} </label>
	<input name="crit_metabolite" value="{$crit_metabolite|eschtml}" />
	
	<label>{@adminmetabolites~crud.cherche.analyte@}</label>
	<input name="crit_analyte" value="{$crit_analyte|eschtml}" />
   </div>
   <div>
		<button type="submit">{@adminmetabolites~crud.form.find@}</button>
		{if $crit_metabolite != '' || $crit_analyte != ''}
			<a href="{jurl $action}">Annuler la recherche</a>
		{/if}
	</div>
</fieldset>

</form>

Dans le controleur, quand la personne valide la recherche,je ratrappe, l'id qui m'a permis de faire cette recherche et je réaffiche la page avec les enregidtrements à modifier:

protected function _editUpdate($form, $resp, $tpl) 
		{
		
		//jlog::dump( $id_deriver);
	//	$action = "adminmetabolites~deriver:editUpdate";
		//$action = "adminmetabolites/:deriver/:editupdate/:id=16";
		//$action = "create";
		$id_deriver = $this->param('id_deriver');
		$action = 'adminmetabolites~deriver:editupdate' , array('id'=>'16')  ;
		$tpl->assign('action', $action);
		
		$crit_metabolite = $this->param('crit_metabolite');
		$crit_analyte = $this->param('crit_analyte');
		$list_metabolite = $this->param('list_metabolite');
		$list_analyte = $this->param('list_analyte');
		
		if ($crit_metabolite || $crit_analyte)
			{
			 if ($crit_metabolite )
				{
				$maFactory = jDao::get('adminmetabolites~metabolites', $this->dbProfile );
				$conditions = jDao::createConditions();
				$conditions->addCondition('nom_metabolite','ILIKE', '%'.$crit_metabolite.'%');   
				//	$conditions->addItemOrder($orderField, $order);

				$list_metabolite = $maFactory->findBy($conditions);
				}
			else
				$list_metabolite = '';
			if ($crit_analyte)
				{
				$maFactory = jDao::get('adminmetabolites~analytes', $this->dbProfile );
				$conditions = jDao::createConditions();
				$conditions->addCondition('nom_analyte','ILIKE', '%'.$crit_analyte.'%');   
				//	$conditions->addItemOrder($orderField, $order);

				$list_analyte = $maFactory->findBy($conditions);
				}	
			else
			$list_analyte = '';
			
				
			}
		else
			{
			$list_analyte = '';
			$list_metabolite = '';
			}
		
		$tpl->assign('crit_metabolite', $crit_metabolite);
		$tpl->assign('crit_analyte', $crit_analyte);
		$tpl->assign('list_metabolite', $list_metabolite);
		$tpl->assign('list_analyte', $list_analyte);
		}

C'est la variable $action qui me pose un soucis, j'ai laissé les différents essais que j'ai fait.

Merci

  [Opened] Re: Variable $action

Reply #4 Posted by foxmask on 07/08/2014 14:59

avez vous essayé la suggestion de laurent en utilisant non pas

$action = 'adminmetabolites~deriver:editupdate' , array('id'=>'16')  ;

mais

$urlAction = jUrl::get('adminmetabolites~deriver:editupdate' , array('id'=>'16')) ;

@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] Variable $action

Reply #5 Posted by info2012 on 07/08/2014 15:31

Bonjour,

En faisant de cette manière, je perds le editupdate:

J'ai mis:

  • dans le formulaire du template <form action="{formurl $urlAction}">
  • dans le controleur: $urlAction = jUrl::get('adminmetabolites~deriver:editupdate' , array('id'=>'16')) ;

Mais quand je valide le formulaire, j'obtient cette URL: adminmetabolites/?id_deriver=16&crit_metabolite=%25&crit_analyte=%25

à la place de: adminmetabolites/deriver/editupdate?id=16&crit_metabolite=%25&crit_analyte=%25

Et j'obtiens ces messages: >Undefined variable: action et >Undefined index: urlAction

Merci beaucoup.>

  [Opened] Variable $action

Reply #6 Posted by info2012 on 07/15/2014 11:49

Bonjour,

Ça y est je viens enfin de trouver la solution oouuf :).

J'ai mis l'url dans le template edit sinon ça marchait jamais, et j'ai mis ça:

<form action="{jurl 'adminmetabolites~deriver:editupdate', array(id=>$id)}". method="POST">

Bonne journée

 
Page
  1. [resolu] Variable $action