отображение данных с помощью запроса в контроллере - PullRequest
0 голосов
/ 04 ноября 2011

Ребята, я начал изучать фреймворк Cake php (версия 2.0), и когда я закончил читать учебник блога, я попытался провести несколько экспериментов, в частности моя проблема: «Можно ли создать запрос в модели, затем выполнитьэто в контроллере и в конце отобразить результат запроса в виде таким образом?

это файл post.php (модель):

<?php

class Post extends AppModel {
    public $name='Post';
}

?>

этоposts_controller (контроллер):

<?php
class PostsController extends AppController {
    public $helpers = array ('Html','Form');
    public $name = 'Posts';
    public $name = 'Articles';

    function index() {
        //$this->set('posts', $this->Post->find('all'));
        $sql="select * from posts";
        $this->set('Articles',$this->Post->query($sql));
    }
}
?>

Вопрос заключается в том, что если я объявляю во второй раз $ name, я получаю сообщение об ошибке, в данном случае, которое является правильным именем для установки переменной, содержащейотправляет массивы (база данных такая же, как в учебнике блога), и второй вопрос: как я могу отобразить данные, полученные из запроса, в index.ctp ?? в примере, который я повторяю таким образом

<?php foreach ($posts as $post): ?>

и для получения элемента мне нужно написать

<?php echo $post['Post']['title']?>

но в моем случае?

И возможно ли объявить функцию, которая возвращает результат запроса в модели,гоen вызвать его в контроллере и отобразить данные в someview.ctp?

1 Ответ

0 голосов
/ 08 ноября 2011

Вопрос 1: $name должно быть именем самого контроллера, не уверен, что вы пытаетесь сделать с двумя именами.Просто придерживайтесь "Сообщений".

Вопрос 2: Вы, вероятно, просто путаете вопросы, ссылаясь на сообщения как на статьи ...

Лучшее, что вам нужно сделать, это изменить это:

$this->set('Articles',$this->Post->query($sql));

до

$this->set('posts',$this->Post->query($sql));

Тогда ссылки в шаблоне будут работать так же.Здесь происходит то, что при вызове метода $this->set вы делаете данные доступными для шаблона в переменной с именем $ posts.Итак, что у вас есть:

$this->set('Articles',$this->Post->query($sql));

Сделает данные доступными для шаблона в переменной с именем $Articles.

...