У меня есть модель с именем PageMetaData , которая содержит заголовок и описание .Это должно быть привязано к любой другой модели и использоваться в качестве тега заголовка и мета-описания для страницы.
Итак, у меня есть модель под названием Brand.У бренда есть поле с именем page_meta_data_id, а у бренда принадлежитT * PageMetaData
. Теперь в представлении для бренда я могу запустить этот код:
if(!empty($data['PageMetaData']['title']))
{
$this->set('title_for_layout', $data['PageMetaData']['title']);
}
else if(!empty($data['Brand']['name']))
{
$this->set('title_for_layout', $data['Brand']['name']);
}
if(!empty($data['PageMetaData']['description']))
{
echo $this->Html->meta('description', $data['PageMetaData']['description'],array('inline'=>false));
}
else if(!empty($data['Brand']['description']))
{
echo $this->Html->meta('description', $data['Brand']['description'],array('inline'=>false));
}
И если PageMetaData связанак текущему бренду и имеет значение для заголовка, он установит это в качестве заголовка страницы, в противном случае, если у бренда есть поле с именем name, оно нам это даст.То же самое для описания.
Проблема в том, что мне не нужно дублировать этот код в каждом представлении для каждой модели, использующей PageMetaData.
Я не могу понять, где можно абстрагировать кодк, чтобы избежать дублирования.
Я не могу поместить его в «Поведение» или «Помощник», потому что вы не можете установить заголовок с того или другого.Я не могу поместить его в компонент, потому что он не может получить доступ к данным, найденным в модели.
Где-нибудь я могу поместить этот код для повторного использования?