【发布时间】:2016-11-07 02:52:02
【问题描述】:
我有一些自定义路由:
---
Name: mysiteroutes
---
Director:
rules:
'signup//$Action/$Data/$Form': 'SignupController'
---
Name: modelascontrollerroutes
After: '#rootroutes'
---
Director:
rules:
'': 'HomePage_Controller'
'$URLSegment/$Action/$ID': 'BaseController'
还有一个注册控制器:
class SignupController extends Page_Controller {
private static $allowed_actions = array(
'submit'
);
public function index(SS_HTTPRequest $request) {
$form = Form::create(
$this,
__FUNCTION__,
FieldList::create(
EmailField::create('Email', 'Email')
),
FieldList::create(
FormAction::create('submit', 'Submit')->setAttribute('class', 'btn btn-success')
),
RequiredFields::create('Email')
);
return $this->customise(array('Form'=>$form))->renderWith(array("Signup", "Page"));
}
public function submit($data, $form = null) {
$form->addErrorMessage("Test", "Test error message",'bad');
return $this->redirectBack();
}
}
显示表单,但没有显示错误消息。当我提交它时,它会转到(当然)SignupController/submit,它返回一个 404。我已将 setFormAction(Controller::join_links(BASE_URL, "signup", 'submit')) 添加到 $form 并且数据通过但 $form 为空,我无法更新它.我可以将其设置为实例变量,但是我可以使用正确的 SS 路由来解决这个问题。我应该更新我的路由以获取 $form 还是有其他问题?
【问题讨论】:
标签: php routing silverstripe