Простой вопрос с абсолютного n00b.
Я пытаюсь создать экран редактирования контента на основе кода, приведенного в руководстве по блогам на сайте Cake.
Вот моя функция редактирования в контроллере (она называется Contents):
function edit( $id = null ) {
$this->Content->id = $id;
Debugger::dump( $this->Content->id );
if( empty( $this->data ) ) {
$this->data = $this->Content->read();
Debugger::dump( $this->Content );
}
else {
if( $this->Content->save( $this->data ) ) {
$this->Session->setFlash( 'Content has been updated.' );
$this->redirect( array('action' => 'index') );
}
}
}
И это edit.ctp :
echo $form->create( 'Content', array('action' => 'edit') );
echo $form->input( 'id', array('type' => 'hidden') );
echo $form->input( 'title' );
echo $form->input( 'nicename' );
echo $form->end( 'Save' );
Тем не менее, когда я захожу на экран «Правка», поля ввода НЕ ЗАПУСКАЮТСЯ с запрошенными данными.
Я использую HTML Helper для создания ссылок, и моя ссылка для редактирования принимает вид:
http://localhost/contents/edit/id:4c8efaa0-02fc-46bf-ac65-06a07614f57d
Как видите, я ввел два дампа отладчика в функции редактирования контроллера ... они показывают, что $ this-> Content-> id остается NULL, когда я посещаю этот URL,
НО, если я изменю URL-адрес этой формы (обратите внимание, что я использовал '=' вместо ':' ):
http://localhost/contents/edit/id=4c8efaa0-02fc-46bf-ac65-06a07614f57d
Отладчик сообщает $ this-> Content-> id , чтобы иметь правильное значение ...
Однако мои поля все еще не заполняются.
Функция индекса работает нормально, хотя ...
function index() {
$this->set( 'contents', $this->Content->find( 'all' ) );
}
Вышеприведенная функция правильно выводит содержимое!
Где я ошибаюсь?Я упускаю какой-то важный фрагмент кода в представлении?Любая помощь будет высоко ценится.
Спасибо, м ^ е