2012-02-07 4 views
-1

Мне нужно загрузить макет профиля, а затем загрузить все представления профиля в этот макет без повторной загрузки макета, чтобы я мог кэшировать большой объект json в браузера клиентов, чтобы позволить доступ к данным для последующих просмотров, без необходимости выполнять новый HTTP-запрос для каждого представления в моем контроллере профиля.Zend Framework загружает представления без повторной загрузки шаблона макета

Можно ли загрузить шаблон макета, а затем загрузить в него виды отображения, отключив их шаблон макета, чтобы шаблон макета никогда не перезагружался, только вид внутри?

Другой вариант - иметь iframe внутри макета, а затем загружать представления в iframe, отключая их макеты, чтобы отображалось только представление.

Просто нужно знать, возможно ли это, и каков будет наилучший вариант.

Заранее спасибо :)

+0

Разве вы не можете использовать другое действие? – Vyktor

+0

Итак, вы хотите загрузить HTML через AJAX и поместить его в свой макет? Или что вы хотите точно? Это совершенно неясно. – bububaba

+0

Хорошо, дайте мне помочь. Мне нужно кэшировать большой объект JSON на одной странице, на которой есть iframe. Все остальные страницы нуждаются в доступе к этим данным, поэтому мне нужно загрузить их в iframe и никогда не обновлять главную страницу после входа в систему. –

ответ

1

В воззрениях, где вы не хотите раскладку попробовать:

$this->_helper->layout->disableLayout(); 

Это должно предотвратить расположение к показу.

Если по какой-то причине, вы хотите, то же действие с того же контроллера под названием много раз, но загрузить расположение раз (должен быть лучший способ организовать себя), но вы всегда можете попробовать:

public function indexAction() 
{ 
    static $firstTime = true; 
    if($firstTime){ 
     $firstTime = false; 
    } else { 
     $this->_helper->layout->disableLayout(); //disable layout 
    } 
} 

Я попытаюсь дать лучший пример: Допустим, у вас есть контроллер foo с 3 видами: индекс, контакт, новости.

class Foo_Controller extends Zend_Controller 
{ 
    //... 

    public function indexAction() 
    { 
     //normal view layout loads 
    } 
    public function contactAction() 
    { 
     //normal view layout loads 
    } 
    public function newsAction() 
    { 
     //no layout for this 
     $this->_helper->layout->disableLayout(); //disable layout 
    } 
} 

Таким образом, представления, которые нуждаются в макете, имеют один. Те, которые этого не делают. Если вы не говорите о макете, но действительно думаете о чем-то другом, то Zend_View_Helpers_Layout у вас будет какой-то код, который поможет нам помочь вам!

+0

Но могу ли я загрузить индексный указатель контроллера в макет с iframe, а затем загрузить все остальные представления в этом контроллере в iframe? Мне нужно, чтобы страница макета загружалась только один раз для моего контроллера профиля, так что я могу кэшировать данные профиля один раз и использовать его во всех представлениях профиля. –

+0

Я не уверен, что именно вы спрашиваете. – Iznogood

+0

В основном мне нужно кэшировать объект json на странице компоновки контроллеров профилей и не перезагружать его каждый раз, когда я загружаю представление из контроллера профилей, таким образом данные кэшируются в браузере клиентов и доступны при просмотре других представлений для этого контроллер. Смысл? –

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