2016-11-07 1 views
1

は、私はいくつかのカスタムルーティングを持っています。私はそれを提出するために行くときそれは(もちろん)SignupControllerに/ 404を返す提出に行く。私は$formsetFormAction(Controller::join_links(BASE_URL, "signup", 'submit'))を追加したとデータが含まれていますが、$formはnullであり、私はそれを更新することはできません。私は潜在的にインスタンス変数にすることができますが、私はおそらくこれを正しいSSルーティングを使って解決することができます。 $formを取得するためにルーティングを更新する必要がありますか、それとも何か間違っていますか?カスタムルーティングおよび取扱フォーム提出

答えて

2

ルーティングには$Dataおよび$Formパラメータは必要ありません。これらのパラメータはPOSTデータに含まれます。

第2に、allowed_actionsには経路によってトリガーされないので、submitメソッドを持つ必要はありません。

これを修正するには、 は

public function link($action = null) 
{ 
    return $this->join_links('signup', $action); 
} 

ですから、これにあなたのインデックス機能を変更するとsignup/...

にリダイレクトされます機能のリンクを追加します。

public function index() { 
    $form = Form::create(
     $this, 
     '', //so it will redirect you to 'signup', instead of 'signup/index'; I think it's prettier :) 
     FieldList::create(
      EmailField::create('Email', 'Email') 
     ), 
     FieldList::create(
      FormAction::create('submit', 'Submit') 
       ->setAttribute('class', 'btn btn-success') 
     ), 
     RequiredFields::create('Email') 
    ); 

    if($this->request->isPost()) 
     return $form; //return the form when it gets posted 

    return $this->customise(array('Form'=>$form))->renderWith(array("Signup", "Page")); 
} 
関連する問題