在学习TP前,曾经接触过一些框架,但都浅尝辄止。
现需开发一款电商网站,本来预计使用ZF,无奈ZF的官方文档太过晦涩,一些表单操作实在是有点莫明其妙,写注册页面时根据官方实例Album修改了AddAction,然而在写登陆时,将代码copy后却发现始终无法完成登陆这个过程,在各行代码中添加redirect()来调试后,发现问题出在输入过滤这一步上,百思不得其解,代码如下:
class LoginController extends AbstractActionController
{
protected $userTable;
public function loginAction()
{
$form = new UserForm();
$form->get('submit')->setValue('Login');
$request = $this->getRequest();
if ($request->isPost()) {
$user = new User();
// $form->setInputFilter($user->getInputFilter());
// 加上此句后form无法被实例化,原因未知。
$form->setData($request->getPost());
if ($form->isValid()) {
$user->exchangeArray($form->getData());
$this->getUserTable()->loginUser($user);
return $this->redirect()->toRoute('user');
}
}
return array('form' => $form);
}
public function getUserTable()
{
if (!$this->userTable) {
$sm = $this->getServiceLocator();
$this->userTable = $sm->get('User\Model\UserTable');
}
return $this->userTable;
}
}
如有大神偶尔闲逛至此,请务必告诉我原因所在。。
测试且无法解决问题后,仍然准备强行往下写,然而又遇到了接下来的问题。
原本的想法是在注册时若数据库中已经存在该用户名则alert一个提示说用户名已存在,但无论如何修改都不能实现,只能使用官方实例中的throw new \Exception("ERROR")来抛出异常,苦心钻研一两小时后不得解,于是考虑不使用ZF2,改用TP。
P.S.:后来猜想是否可以通过修改module/Application/view/error/index.phtml中代码实现想要功能,但因为考虑到可能后续还会有一些难以解决的问题,最终还是放弃核实。可能以后空下来会回头去试一试。