2014-12-04 44 views
1

我在phalcon论坛中也提过这个问题,但尚未收到回复。在单个页面上组合多个表单/控制器

我试图通过检查示例来学习phalcon。目前我正在学习Vokura的例子。

我想要做的是不是要seperately登录和注册页面,我想有他们在一个页面上,说指数..

我看了部分的模板,并试图用途:

//views>index.volt 
<div>{{ partial("session/login") }}</div> 
<div>{{ partial("session/signup") }}</div> 

我还包括:

//controllers>IndexController.php 
use Vokuro\Forms\LoginForm; 
use Vokuro\Forms\SignUpForm; 

然而,抛出一个错误

Notice: Undefined variable: form 

我的问题是,我需要做什么才能在登录页面和注册页面中包含登录和注册表单,而无需更改LoginForm.php,SignupForm.php,SessionController.php,因此我还可以使用链接转到个人登录和注册页面。

希望我有任何意义,先谢谢您。

回答

0

假设您正在使用Vokuros的部分loginsignup窗体,它会变得有点棘手。

两者都需要一个$form变量在视图中,它们都使用该变量下的不同对象。如果你不想编辑这些部分,这里有两步指南。

1即时处理您的表格

在索引控制器期间,您正在声明您的用法。但形式必须安然无恙。下面是例如,您可能要调整你的情况:

use Vokuro\Forms\LoginForm; 
use Vokuro\Forms\SignUpForm; 

class DefaultController extends \Phalcon\Mvc\Controller { 

    function indexAction() { 
     // declaration for further manipulations 
     $scriptLoginForm = new LoginForm(); 
     $scriptSignUpForm = new SignUpForm(); 

     // manipulations space 
     // .... 

     // defining for view. Notice, that I presented here 
     // that variables in View will have different names. 
     $this->view->setVar('loginForm', $scriptLoginForm); 
     $this->view->setVar('signUpForm', $scriptSignInForm); 

     // default for using one form in view would be: 
     // $this->view->setVar('form', $formInstance); 
    } 
} 

2定义$form花灯视图。

比你可能想在你的视图中操纵一点点,在适当的时刻设置适当的表单实例。

{% set form = loginForm %} 
<div>{{ partial("session/login") }}</div> 

{% set form = signUpForm %} 
<div>{{ partial("session/signup") }}</div> 

或根据manual

<div>{{ partial("session/login", ['form': loginForm]) }}</div> 
<div>{{ partial("session/signup", ['form': signUpForm]) }}</div> 

没有测试的例子,但应该工作或多或少这种方式。

请注意,这是Vokuro的唯一示例。在开发自己的零件时,您可能会根据偏差来区分可变量名称,例如。在partial/login使用$formLogin等。

+0

谢谢您的详细解答。自从这个问题已经很长时间了,我因为缺乏支持而离开了phalcon,我对整个mvc场景相当陌生,而不是php的专家,所以我决定从一个框架开始就是一个错误广泛使用。我很感谢你的回答。如果我没有错,我已经做了类似于你的回答,但它抱怨csrf已经定义等。我可能再次设置它只是为了看看这是否工作。再次感谢您 – PersyJack 2015-03-06 13:31:15

+0

因此,您可能做得对。 CSRF是完全不同的故事,但出现这种错误意味着以前的步骤可以正常工作;) – yergo 2015-03-06 13:48:30

相关问题