我目前正在使用CakePHP,我遇到了一个不向我的数据库提交数据的表单的问题。没有错误消息,当我调试时,表单数据似乎被添加到数组中(参见附图)。
这是我的模特:
class Split扩展了AppModel {
public $validate = array(
'title' => array('rule' => 'notEmpty'),
'url' => array('rule' => 'notEmpty'),
'descr' => array('rule' => 'notEmpty')
);
这是我的观点:
<h1>Add New Case</h1>
<?php
pr($this->request->data);
echo $this->Form->create('Split');
echo $this->Form->input('title');
echo $this->Form->input('url');
echo $this->Form->input('descr', array('rows' => '2'));
echo $this->Form->end('Add New Case');
?>
这是Controller中的添加功能:
public function add() {
if ($this->request->is('split')) {
$this->Split->create();
if ($this->Split->save($this->request->data)) {
$this->Session->setFlash('Your case has been saved.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to add case.');
}
}
}
按下提交数据后,将数据插入到Split数组中,但表单未提交:
这是呈现的HTML:
<form action="/uilab/splits/add" id="SplitAddForm" method="post" accept-charset="utf-8">
<div style="display:none;"><input type="hidden" name="_method" value="POST"></div>
<div class="input text required">
<label for="SplitTitle">Title</label>
<input name="data[Split][title]" maxlength="255" type="text" value="Some title" id="SplitTitle"></div>
<div class="input text required">
<label for="SplitUrl">Url</label>
<input name="data[Split][url]" maxlength="255" type="text" value="http://www.someurl.com" id="SplitUrl">
</div>
<div class="input textarea required">
<label for="SplitDescr">Descr</label>
<textarea name="data[Split][descr]" rows="2" cols="30" id="SplitDescr">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</textarea>
</div>
<div class="submit"><input type="submit" value="Add New Case"></div>
</form>
我是CakePHP的新手,所以对于如何解决这个问题的任何想法都非常感激。
哦,新年快乐顺便说一句! :)
答案 0 :(得分:2)
if ($this->request->is('split')) {
应该是
if ($this->request->is('post')) {
请求永远不会是split
,因此代码永远不会被执行。有效值为post, get, put
...