Cake PHP Form Helper - PullRequest
       1

Cake PHP Form Helper

0 голосов
/ 19 декабря 2010

У меня проблема с Form Helper.Мой контроллер называется posts_controller.php, и он выглядит следующим образом:

<?php
    Class PostsController extends AppController
    {
        var $name='Posts';
        var $helpers=array('Html','Form','Link');
        var $components = array('Session');
        function index()
        {
            $this->pageTitle='Cake PHP Index page';            
            $this->paginate();
            $this->set('posts',$this->Post->find('all'));
        }

        function view($id=null)
        {
            $this->Post->id = $id;
            $this->set('post', $this->Post->read());
        }

        function add()
        {
            if(!empty ($this->data))
            {
                if($this->Post->save($this->data))
                {
                    $this->Session->setFlash('Your post has been saved.');
                    $this->redirect(array('action' => 'index'));
                }
            }
        }
    }
?>

Когда я перехожу к действию добавления, представление add.ctp загружается с соответствующей формой.

Это мое представлениеfile add.ctp

<?php
    echo $this->Form->create('Post');
    echo $this->input('title');
    echo $this->input('body');
    echo $this->Form->end('Save');
?>

Когда я отправляю форму, я получаю сообщение об ошибке, в котором говорится, что действие posts не определено в вашем контроллере.И когда я проверил источник страницы в браузере, действие формы имеет ложное значение. Получаемое значение равно

<form id="PostAddForm" method="post" action="/cakephp/app/webroot/index.php/posts/posts/add">

вместо

<form id="PostAddForm" method="post" action="/cakephp/app/webroot/index.php/posts/add">

Можете ли выпомогите мне?

Ответы [ 4 ]

2 голосов
/ 19 декабря 2010

Попробуйте включить mod_rewrite на вашем сервере. Для меня это проблема, особенно если ваш код соответствует тому, что вы опубликовали.

1 голос
/ 19 декабря 2010

Как говорит Ник, похоже, это проблема mod_rewrite.Эта форма HTML должна выглядеть так:

<form id="PostAddForm" method="post" action="/YourSite/posts/add">

mod_rewrite - это модуль Apache.Обычно он не включен по умолчанию.Существует множество страниц, объясняющих, как это сделать, но если вы работаете в Ubuntu или Debian, это может быть загадкой.Если это так, посмотрите здесь: http://bit.ly/ubuntu_mod_rewrite

0 голосов
/ 24 октября 2013

Я думаю, это должно быть написано так

$this->Form->create("Post",array('action'=>'add'));
0 голосов
/ 23 марта 2013

Также вы забыли 'в своем коде:

 echo $this->input('title);
 echo $this->input('title');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...