3.11.2 Creando Helpers
Si un helper del core (o alguno mostrado en Cakeforge o en la Bakery) no se ajusta a tus necesidades, los helpers son fáciles de crear.
Digamos que quisieramos crear un helper que pudiera ser usado para mostrar como salida un link específicamente creado con CSS que lo necesitas en diferentes partes de tu aplicación. Para poder ajustar tu lógica dentro de la estructura existente de helpers de CakePHP, necesitarás crear una nueva clase en /app/views/helpers. Llamemos a nuestro helper LinkHelper. El archivo de clase se verá algo como esto:
<?php
/* /app/views/helpers/link.php */
class LinkHelper extends AppHelper {
function makeEdit($title, $url) {
// Lógica para crear un link con un formato específico va aqui...
}
}
?>
<?php/* /app/views/helpers/link.php */class LinkHelper extends AppHelper {function makeEdit($title, $url) {// Lógica para crear un link con un formato específico va aqui...}}?>
Existen algunos métodos incluidos en la clase de Helper en CakePHP de la cual quisieras sacar ventaja:
output(string $string)
Usa esta función para enviar cualquier información de regreso a tu vista.
<?php
function makeEdit($title, $url) {
// Usa la función de salida del helper para enviar
// datos con formato de regreso a la vista:
return $this->output(
"<div class=\"editOuter\">
<a href=\"$url\" class=\"edit\">$title</a>
</div>"
);
}
?>
<?phpfunction makeEdit($title, $url) {// Usa la función de salida del helper para enviar// datos con formato de regreso a la vista:return $this->output("<div class=\"editOuter\"><a href=\"$url\" class=\"edit\">$title</a></div>");}?>
3.11.2.1 Including other Helpers
Es posible que necesites usar alguna funcionalidad existente en otro helper. Para hacerlo, puedes especificar los helpers que deseas utilizar con un arreglo $helpers, con el formato que usarías en un controlador.
<?php
/* /app/views/helpers/link.php (usando otros helpers) */
class LinkHelper extends AppHelper {
var $helpers = array('Html');
function makeEdit($title, $url) {
// Usa el helper de HTML para mostrar
// información con formato:
$link = $this->Html->link($title, $url, array('class' => 'edit'));
return $this->output("<div class=\"editOuter\">$link</div>");
}
}
?>
<?php/* /app/views/helpers/link.php (usando otros helpers) */class LinkHelper extends AppHelper {var $helpers = array('Html');function makeEdit($title, $url) {// Usa el helper de HTML para mostrar// información con formato:$link = $this->Html->link($title, $url, array('class' => 'edit'));return $this->output("<div class=\"editOuter\">$link</div>");}}?>
3.11.2.2 Callback method
Todavia no hay una traducion de este texto. Por favor ayudanos y traducirla.. Mas info sobre traduciones
Helpers feature a callback used by the parent controller class.
beforeRender()
The beforeRender method is called after the controller's beforeRender method but before the controller's renders views and layout.
3.11.2.3 Usando tu Helper
Una vez hayas creado tu helper y de haberlo colocado dentro de /app/views/helpers/, podrás incluirlo dentro de tus controllers usando la variable especial $helpers.
Una vez tu controller se haya dado cuenta de esta nueva clase, podrás usarla en los views accesando mediante una variable llamada por ese helper:
<!-- crear un link usando el nuevo helper -->
<?php echo $link->makeEdit('Change this Recipe', '/recipes/edit/5') ?>
<!-- crear un link usando el nuevo helper --><?php echo $link->makeEdit('Change this Recipe', '/recipes/edit/5') ?>
Recuerda incluir el FormHelper en el array de $helpers si es apropiado. Los ayudantes Html y Session (si esta activa una sesión) siempre estarán disponibles.


























