2014-12-04 59 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

相關問題