2014-09-04 7 views
0

Я использую CakePHP 2.4. У меня есть блог, где я могу добавлять и редактировать сообщения. Когда я осуществил свою edit.ctp, я узнал, что у меня есть один и тот же код в представлении add.ctp:Как я могу использовать ту же форму в нескольких представлениях

<?php 
    echo $this->Form->create(); 
    echo $this->Form->input('headline'); 
    echo $this->Form->input('text', array('type' => 'textarea'); 
    echo $this->Form->end('Save'); 
?> 

(упрощенный код)

Что касается CakePHP's рекомендации, я хочу, чтобы мой код DRY. Каков наилучший способ определить форму только один раз и использовать ее в обоих представлениях?

+0

[Элементы] (http://book.cakephp.org/2.0 /en/views.html#elements)? – AgRizzo

+1

вы также можете визуализировать представление с помощью $ this-> render ('edit'); добавьте, если у вас есть edit.ctp, который имеет тот же код, что и вы, в add.ctp – Abhishek

ответ

4

Создание представления в элементе папки с кодом формы

// app/View/Elements/postForm.ctp 

<?php 
    echo $this->Form->create(); 
    echo $this->Form->input('headline'); 
    echo $this->Form->input('text', array('type' => 'textarea'); 
    echo $this->Form->end('Save'); 
?> 

Затем включите его в своем желаемого виде

echo $this->element('postForm'); 
+0

Прекрасно работает в CakePHP. Благодарю. – Simon

+0

Если добавление и редактирование на 100% идентичны, просто переопределите, какое представление визуализируется в действии добавления/редактирования в контроллере: '$ this-> render ('postForm');' Если вы создаете 100% идентичные формы в качестве элементов, вы получите добавление и редактирование представлений, у которых есть только строка 'echo $ this-> element ('postForm');', что является своего рода расточительным. – Kai

+0

@Kai: Спасибо за ваш комментарий. Я использую 100% идентичные формы в редактировании и добавлении просмотров. Но оба взгляда не идентичны на 100%. Кроме формы, они отличаются в некоторых html-элементах. – Simon

Смежные вопросы