переменная в макете - PullRequest
       0

переменная в макете

0 голосов
/ 26 января 2012

Я использую CakePHP на своем веб-сайте, и мне нужно проанализировать переменную и записать ее в макет.Переменная находится в MySQL, таблица «статьи», столбец «автор».

Если внутри статьи, которую я пишу, она показывает мне автора, но если я пишу ее в views / layout / default.thtml,ничего не показывает.

Есть ли простой способ сделать это?

Ответы [ 2 ]

1 голос
/ 26 января 2012

Получаете ли вы эту переменную в правильной функции контроллера? Может быть, вам нужно вставить его в функцию beforeRender (http://planetcakephp.org/aggregator/items/1398-utilizing-the-appcontrollerbeforerender-to-assign-cakephps-controller-attribut)

0 голосов
/ 26 января 2012

Один из вариантов сделать это - использовать CakePHP requestAction и поместить его в элемент, который можно пометить в макете по умолчанию. По сути, вы бы сделали что-то похожее на следующее

//Create a function in your articles controller as such
function authorName($articleId = NULL){    
   //Return Author if an ID is passed
    if(!empty($articleId)){
        $this->Article->recursive = -1;
        $article = $this->Article->findById($articleID);

        $return $article['Article']['author'];
    }

}

// Then create an element author_name.ctp and place it in views/elements 
// that requests the AuthorID form the above function
<div>
<?php 
    $author = $this->requestAction(
        array(
            'controller' => 'articles', 
            'action' => 'authorName'
        ), 
        array(
            'pass' => $article_id
        )
    );
    echo $author;
?>
</div>

// Then in you default layout or anywhere else 
// you can include the element as such
// You have to figure out a way to get the $id. If you can place a screenshot
// Or some code of you default layout area where you need this, we can help you further
<?php echo $this->element('author_name', array('article_id' => $id)); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...