2013-03-23 2 views
2

Я изучаю cakephp из нескольких дней ... так что, пожалуйста, помогите немного поблагодарить.как вызвать файл вида с контроллера (cakePHP)

Я сделал контроллер -

class PostController extends AppController { 
var $name='Posts'; 

function index(){ 
    $posts=$this->Post->find('all'); 

    $this->set(compact('posts')); 

} 

в Вьешь сообщение папки с index.ctp файлом. Я хочу спросить, откуда он получает «CakePHP: инфраструктура php быстрого развития» и откуда она берет контент. Я отправляю эти данные с контроллера, поэтому он печатает только var_dump($posts); ... Спасибо заранее.

ответ

2

торт PHP содержит файлы раскладки по умолчанию в папке «приложение/вид/Layout» .. имя файла default.ctp в этой папке будут приняты по умолчанию ..

если вы откроете default.ctp в макете вы будете см. что-то вроде

и другие ссылки определены .. вы можете прокомментировать и проверить, какие изменения вы видите.

здесь откуда вид получает «» CakePHP: быстрое развитие PHP рамки»

эта линия

<?php echo $this->fetch('content'); ?> 

в макете выборки данных из контроллера, чтобы показать, в силу которых мы устанавливаем с помощью $ this- -> набор() в контроллере

, если вы хотите изменить макет создать свой собственный в папке макета и использовать в как

регулятора,
class PostController extends AppController { 
var $name='Posts'; 

function index(){ 
$posts=$this->Post->find('all'); 

$this->set(compact('posts')); 
$this->layout = false; // ot you can set ypur own file like 'xyz' for 'xyz.ctp' 
} 

установить макет для каждого действия в использовании контроллера

function beforeFilter() { 
    parent::beforeFilter(); 
    $this->layout = 'layout'; 
} 

Чтобы узнать больше о макете см http://book.cakephp.org/2.0/en/views.html#layouts

Надеюсь вы меня

+0

да это работает .. но может у, пожалуйста, сообщите, что нам приходилось писать в каждом контроллере весело ction $ this-> layout = false; ... – Akash

+0

@Akash Я отредактировал свой ответ, пожалуйста, проверьте – alwaysLearn

+0

ok, это означает, что если мы хотим, чтобы макет выполнял $ this-> layout = false; в функции beforeFilter. – Akash

0

"CakePHP: быстрая среда разработки PHP"

Для выше заглянуть внутрь views -> layout -> default.ctp файла.

Также измените значение по умолчанию cakephp routing, чтобы вы могли видеть действие индексации сообщений, когда у вас есть сообщения в URL-адресе.

0

Лучший способ вызвать макет из контроллера

$this->layout = 'Your layout page name'; 
Смежные вопросы