1

私は現在 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');
?>

これは、コントローラーの add 関数です。

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 にかなり慣れていないので、これをトラブルシューティングする方法についてのアイデアは大歓迎です。

ああ、明けましておめでとう!:)

4

1 に答える 1

2
if ($this->request->is('split')) {

する必要があります

if ($this->request->is('post')) {

リクエスト処理について読んでください。

リクエストsplitは決して行われないため、コードが実行されることはありません。有効な値はpost, get, put...

于 2012-12-31T17:48:38.270 に答える