0

私はケーキphpの初心者です...ページモデルなどを作成しました.しかし、ページ追加フォームの公開ボタンをクリックしてもデータが送信されません.以下は私のコードです.どんな助けでも大歓迎です..これは私のものです.コントローラー機能

   function add(){
     if(!empty($this->data)){
  if($this->Page->save($this->data)){
  $this->Session->setFlash('This Page was successfully added!');
                $this->redirect(array('action'=>'index'));
     } else {
 $this->Session->setFlash('This Page was not added, Please try again!');
    }
  }
}

これは私のPage.phpです

class Page extends AppModel {
  var $name ='Page';
var $validate = array (
    'title' => array(
        'title_must_not_be_blank'=>array(
                'rule'=> 'notEmpty',
                'message'=> 'This Page is missing A Title!'
            ),
        'title_must_no_be_unique'=>array(
                'rule'=> 'isUnique',
                'message'=> 'A Page with the Title exists!'
            )   
        ),
    'body'=>array(
    'body_must_not_be_blank'=>array(
            'rule'=> 'notEmpty',
            'message'=> 'This Page is missing A Body text!'     
        )   
    )
);
public function isOwnedBy($Page, $user) {
return $this->field('id', array('id' => $Page, 'id' => $user)) === $Page;

} }

これは View/Pages/add.ctp です

 <div id="Page">  

新しいページを追加

<?php 
echo $this->form->create('Page', array('action'=>'add'));
echo $this->form->input('title');
echo $this->form->input('body');
echo $this->form->end('Publish');

?>

4

2 に答える 2

1

デフォルトPagesControllerでは$uses = array()

セットするだけ$uses = array('Page')'。ここで問題が発生している可能性があります。

また、Guillemo Mansillaが言ったよう echo $this->Form->create()に、echo $this->form->create()

また、あなたの行動は

function add() {
    if (!empty($this->request->data)) {
        if ($this->Page->save($this->request->data)) {
            $this->Session->setFlash('This Page was successfully added!');
            $this->redirect(array('action' = > 'index'));
        } else {
            $this->Session->setFlash('This Page was not added, Please try again!');
        }
    }
}

アップデート

次のルートはここで問題を引き起こします。

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

経由でページにアクセスしているためです/pages/add。したがって、フォームを送信すると、アクションではdisplayなくaddアクションになります。

このようにルートを設定してRouter::connect('/add-page', array('controller' => 'pages', 'action' => 'add'));、物事を適切に機能させます。

これがお役に立てば幸いです。

于 2013-11-11T05:59:35.833 に答える
0

echo $this->Form->create() を試してください

echo $this->form->create() の代わりに

言い換えれば、あなたのケースを気にしてください。

于 2013-11-11T05:05:33.073 に答える