Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alguém ai tem alguma idéia de como instanciar um form dentro de um header.phtml que é renderizado dentro do layout.phtml???
a estrutura é a seguinte.
application
-configs
-modules
--admin
--default
---controllers
---forms
---layouts
----scripts
-----header.phtml
-----layout.phtml
-----footer.phtml
---models
---views
ao inves de mostrar o form na index.phtml eu gostaria de mostrar o form na header.phtml, e como esse header.phtml vai na layout.phtml, o form apareceria em todas as paginas....
Nao da nao, pois chamo o form no IndexController, ele passa a variavel form na action index. Ou seja como vou instanciar a variavel form no header.phtml sendo que nao ha um controller para ele?
meu IndexController.php
indexAction()
{
$form = new Form_Login();
$this->view->form = $form;
}
e na index.phtml
<?php echo $this->form();?>
assim funciona tranquilo, mas estou querendo instanciar o form no header.phtml que nao tem controller, dai estou me perdendo aqui.
tipo o header.phtml esta dentro do diretorio layouts/scripts, e renderizo ele no layout.phtml da seguinte forma
<?php echo $this->render('header.phtml');?>
na <div> header saca...
mas nao consigo pensar em como instanciar o form nele..
Ah meu form e so um basico que fiz para teste.
<?php
class Form_Login extends Zend_Dojo_Form
{
public function init()
{
$this->setMethod('post');
$this->setName('loginform');
$this->addElement(
'ValidationTextBox',
'login',
array(
'label' => 'Email:',
'required' => true,
'invalidMessage' => 'Entre seu email aqui.',
'trim' => true,
'regExp' => '[a-z0-9._%+-]+@[a-z0-9-]+\.[a-z]{2,4}',
'required' => true,
));
$this->addElement(
'PasswordTextBox',
'password',
array(
'label' => 'Password:',
'required' => true,
'trim' => true,
'lowercase' => true,
'maxLength' => '20',
'regExp' => '^[a-z0-9.]{8,}$',
'invalidMessage' => 'Password inválido: Entre no mínimo 8 caracteres alfanuméricos.',
));
$this->addElement(
'Button',
'send',
array(
'value' => 'Entar',
'type' => 'submit',
));
}
}
Vlw
header.phtml
<?php
$form = new Form_Login();
echo $form;
?>
Assim funciona.
Carlos Eduardo
Fala Matias, seguinte tinha conseguido mostrar o form na header ontem a noite, mas meu problema e o seguinte. Meu form extends from Zend_Dojo_Form, então tenho que abilitar o dojo usando.
$this->dojo()->enable();
na layout.phtml dou um check para ver se o dojo esta habilitado, e se estiver inclui a livraria e a css.
<?php if($this->dojo()->isEnabled())
{
$this->dojo()->setDjConfigOption('parseOnLoad', true)
->addStylesheetModule('dijit.themes.tundra')
->setLocalPath('js/dojo/dojo.js');
echo $this->dojo();
}
?>
funciona corretamente em qualquer view, mas $this->dojo()->enable(); nao funciona na header.phtml. Então quando o form é mostrado na header.phtml é apenas um form comum, e não Dojo_Form....>
Fala Matias, seguinte tinha conseguido mostrar o form na header ontem a noite, mas meu problema e o seguinte. Meu form extends from Zend_Dojo_Form, então tenho que abilitar o dojo usando.
$this->dojo()->enable();
na layout.phtml dou um check para ver se o dojo esta habilitado, e se estiver inclui a livraria e a css.
<?php if($this->dojo()->isEnabled())
{
$this->dojo()->setDjConfigOption('parseOnLoad', true)
->addStylesheetModule('dijit.themes.tundra')
->setLocalPath('js/dojo/dojo.js');
echo $this->dojo();
}
?>
funciona corretamente em qualquer view, mas $this->dojo()->enable(); nao funciona na header.phtml. Então quando o form é mostrado na header.phtml é apenas um form comum, e não Dojo_Form....
Saquei, quando uso dojo()->isEnabled()
<?php if($this->dojo()->isEnabled())
{
$this->dojo()->setDjConfigOption('parseOnLoad', true)
->addStylesheetModule('dijit.themes.tundra')
->setLocalPath('js/dojo/dojo.js');
echo $this->dojo();
}
?>
Ele nao detecta se o dojo esta sendo usando em paginas da template, apenas na view sendo renderizada dentro de content()...devia ter percebido isso antes.
Opa... então resolveu?
Carlos Eduardo
Sim resolvido...
Olha, não tem muito mistério. É só instanciar normal.
Como está o seu header.phtml, layout.phtml, form e bootstrap?
Carlos Eduardo