CakePHP: Встроить имя файла CTP и путь в представлениях и элементах

Я ищу элегантный способ сделать немного jquery осведомленным об имени файла и пути к файлу ctp, содержащему заданный выбор dom. Я использую simple_html_dom для записи изменений в мухи шаблона через вызов ajax. Мне нужно указать имя файла и путь к файлу ctp шаблона представления или элемента, который содержит выбранный мной элемент dom, чтобы записать изменения в правильный файл.

Помимо ручной передачи этой информации в каждое представление и элемент моего приложения, существует ли элегантный (и безопасный) способ сделать эту информацию доступной для jquery?

Кроме того, есть ли причина, по которой мне следует беспокоиться о встраивании этой информации в документ в виде простого текста? Какое место наиболее подходящее для его хранения? Моей первой мыслью был атрибут заголовка элемента, но есть ли более подходящее место?

Спасибо!

ОБНОВЛЕНИЕ Этот вопрос лучше сформулировать так: как лучше всего прозрачно расширить или изменить каждое представление и элемент в торте? Сейчас я передаю некоторую информацию из app_controler в beforeRender, но это не позволяет мне передавать информацию об отдельных файлах представлений элементов, насколько мне известно. В идеале, каждое представление и элемент должны искать наличие определенного имени класса в элементах dom и вставлять информацию о пути и имени файла в атрибуте title для этого элемента перед рендерингом. Я не могу найти хороший способ сделать это!


person Community    schedule 05.09.2010    source источник
comment
Динамическое изменение файлов шаблонов, то есть самоизменяющийся код, звучит как плохая идея. ИМХО, вы должны переосмыслить то, что вы пытаетесь сделать здесь. И из вашего последнего абзаца я не совсем уверен, чего вы пытаетесь достичь.   -  person deceze♦    schedule 06.09.2010
comment
Спасибо! В итоге я расширил view.php таким же образом, как плагин debug_toolkit использует для добавления комментариев в начале и конце визуализируемых элементов, поскольку мне также нужен доступ к именам шаблонов элементов, я скоро напишу ответ для тех, кто заинтересован!   -  person    schedule 10.09.2010
comment
@decaze ваша точка зрения очень хорошо понята, я ищу другие варианты, которые не требуют модификации шаблона. Спасибо!   -  person    schedule 10.09.2010


Ответы (2)


<div rel="<?php echo __FILE__; ?>">...</div>

если я не понимаю тебя

person dogmatic69    schedule 14.10.2010

Вы можете создать свой собственный класс View, который сделает это за вас. Внутри папки «представления» создайте файл с именем (например): custom.php.

Этот файл должен содержать класс, расширяющий базовый класс View в CakePHP, с именем CustomView. Затем в вашем AppController's beforeFilter установите $this->view = 'Custom'. Я не уверен, какой метод лучше всего подходит для того, что вы хотите сделать, но render() или renderLayout(), вероятно, являются хорошим местом для начала поиска.

person Utoxin    schedule 29.06.2011
comment
Бах. И я не замечаю здесь древней даты. Похоже, вы сделали то, что я предложил. - person Utoxin; 29.06.2011