tutorial example español ejemplos cakephp3 bake cakephp

example - cakephp: ¿Cómo configurar casilla de verificación para marcar?



cakephp3 bake (11)

estoy usando

$form->input(''Model.name'', array(''multiple''=>''checkbox'');

Intento basarme en los datos del modelo para configurar ciertas casillas de verificación.

¿Cómo puedo hacer eso?


Aquí hay un pequeño fragmento de código de uno de mis proyectos:

$categories = $this->Site->Category->find(''list'', array(''recursive'' => -1)); $this->set(compact(''categories'')); $this->Site->Category->bindModel(array(''hasOne'' => array(''CategoriesSite''))); $selected = $this->Site->Category->find(''list'', array( ''fields'' => array(''id''), ''conditions'' => array( ''CategoriesSite.site_id'' => $this->data[''Site''][''id''], ), ''recursive'' => 0, )); $this->set(compact(''selected''));

La clave principal para seleccionar es ''fields'' => array(''id'')


La solución de Marko sigue funcionando en CakePHP 2.0+

-> https://.com/a/1962499/3197383

Solo necesita corregir con la nueva sintaxis:

<?php $options = array(1 => ''ONE'', ''TWO'', ''THREE''); $selected = array(1, 3); echo $this->Form->input(''ModelName'', array(''multiple'' => ''checkbox'', ''options'' => $options, ''selected'' => $selected) ); ?>


La solución de cmptrgeekken funciona para una sola casilla de verificación. Supongo que está generando múltiples casillas de verificación, una relación HABTM o algo similar.

Debe pasar una matriz con los valores de los elementos que se van a seleccionar para el método, como este:

$options = array(1 => ''ONE'', ''TWO'', ''THREE''); $selected = array(1, 3); echo $form->input(''Model.name'', array(''multiple'' => ''checkbox'', ''options'' => $options, ''selected'' => $selected));

va a generar esto:

<div class="input select"> <label for="ModelName">Name</label> <input name="data[Model][name]" value="" type="hidden"> <div class="checkbox"> <input name="data[Model][name][]" checked="checked" value="1" id="ModelName1" type="checkbox"> <label for="ModelName1" class="selected">ONE</label> </div> <div class="checkbox"> <input name="data[Model][name][]" value="2" id="ModelName2" type="checkbox"> <label for="ModelName2">TWO</label> </div> <div class="checkbox"> <input name="data[Model][name][]" checked="checked" value="3" id="ModelName3" type="checkbox"> <label for="ModelName3" class="selected">THREE</label> </div> </div>

La primera y la tercera casilla de verificación marcadas.

Solo recuerde que en realidad está trabajando con un elemento de selección múltiple que solo se muestra como un grupo de casillas de verificación (lo que es IMO mejor debido a la usabilidad).


No uso CakePHP, pero de acuerdo con los documentos, parece que debería poder agregar la opción ''checked''=>true :

$form->input(''Model.name'', array(''type''=>''checkbox'',''checked''=>true));

ya que esa es una de las opciones de la función de checkbox de checkbox .


Otra forma de marcar una casilla de verificación con la "etiqueta" al lado es.

$form->checkbox(''Model.name'', array(''checked''=>''checked''))?> Label

Sin embargo, la etiqueta puede ser lo que quieras. ejemplo: 21,000-3000, Tiro, Humano. Estoy seguro de que entiendes la idea.



$options = array(1 => ''ONE'', ''TWO'', ''THREE''); $selected = array(1, 3); echo $form->input(''Model.name'', array( "name"=>$mnus[''Aco''][''id''], "type"=>"select", "multiple"=>"checkbox", ''options'' => $options, ''selected'' => $selected) );

esta es la forma correcta para la casilla de verificación múltiple y la opción marcada. Estoy usando esto en cake1.3 por favor vuelva a verificar una vez en su código, debe funcionar.


$options = array("fixed","varry"); $selected = "0"; echo $form->input(''Model.name'', array(''multiple'' => ''checkbox'', ''options'' => $options, ''value'' => $selected));

Use el atributo de value para hacer que se marque por defecto.


<?php $subjects = array(1=>''Snow boarding'',2=>''Surfing'',3=>''Trekking'',4=>''Swimming''); $selected_skills = array(0=>2,1=>4); // For MutiSelect box with selected $form->input(''skills_list'',array(''label'' => ''Skills'',''options'' => $subjects,''class'' =>'''',''multiple''=>true,''selected''=> $selected_skills)); //For Multiple checkbox with checked $form->input(''skills_list'',array(''label'' => ''Skills'',''options'' => $subjects,''class'' =>'''',''multiple''=>''checkbox'',''selected''=> $selected_skills)); ?>


''likes_preferences'' =>array( ''type''=>''select'',''label'' => ''Main likes/preferences'', ''options'' => $this->Ethos->toOptionsArray(''preferences''), ''multiple'' => ''checkbox'', ''div''=>array(''class''=>''input select checkbox-group clearfix''), ''hiddenField'' => false, ),

el código anterior para agregar los datos, debe cambiar el campo ''likes_preferences'' de la matriz a una cadena separada por comas antes de guardar en la base de datos.

$preferences = implode('','',$this->request->data[''Member''][''likes_preferences'']); $this->request->data[''Member''][''likes_preferences''] = $preferences;

MODO DE EDICIÓN

$likes = explode('','',$this->request->data[''Member''][''likes_preferences'']); ''likes_preferences'' =>array( ''type''=>''select'',''label'' => ''Main likes/preferences'', ''options'' => $this->Ethos->toOptionsArray(''preferences''), ''multiple'' => ''checkbox'', ''div''=>array(''class''=>''input select checkbox-group clearfix''), ''hiddenField'' => false, ''selected'' => $likes ),

Ya ha terminado, nuevamente debe convertir la matriz en cadena mientras actualiza la base de datos en la acción de edición.


echo $this->Form->input(''Title'', array(''type''=>''checkbox'', ''label''=>''Label'', ''checked''=>''checked''));