проблемы новичка с codeigniter - PullRequest
0 голосов
/ 18 марта 2010

Я пытаюсь изучить codeigniter (после книги), но не понимаю, почему веб-страница пуста.

мой контроллер

class Welcome extends Controller {

    function Welcome()
    {
        parent::Controller();
    }

    function index()
    { 
        $data['title'] = "Welcome to Claudia's Kids";
        $data['navlist'] = $this->MCats->getCategoriesNav();
        $data['mainf'] = $this->MProducts->getMainFeature();
        $skip = $data['mainf']['id'];
        $data['sidef'] = $this->MProducts->getRandomProducts(3, $skip);
        $data['main'] = "home";     
        $this->load->vars($data);
        $this->load->view('template');
    }

вид:

<--doctype declaration etc etc.. -->
</head>
<body>
    <div id="wrapper">
        <div id="header">
            <?php $this->load->view('header');?>
        </div>

        <div id='nav'>
            <?php $this->load->view('navigation');?>
        </div>

        <div id="main">
            <?php $this->load->view($main);?>
        </div>

        <div id="footer">
            <?php $this->load->view('footer');?>
        </div>

    </div>
</body>
</html>

Теперь я знаю, что модель передает правильные переменные, но страница выглядит совершенно пустой. Я ожидаю, по крайней мере, увидеть ошибку или базовую структуру HTML, но страница просто пуста. Более того, контроллер не работает, даже если я изменю его следующим образом:

function index()
{ 
    echo "hello.";
}

Что я делаю не так? Все работало, пока я не сделал некоторые изменения в модели - но даже если я удаляю все эти новые изменения, страница все еще остается пустой ... я действительно запутался!

спасибо, П.


Я выделил функцию, которая доставляет мне проблемы. вот оно:

function getMainFeature()
{
    $data = array();
    $this->db->select("id, name, shortdesc, image");
    $this->db->where("featured", "true");
    $this->db->where("status", "active");
    $this->db->orderby("rand()");
    $this->db->limit(1);
    $Q = $this->db->get("products");
    if ($Q->num_rows() > 0)
    {
        foreach($Q->result_arry() as $row)
        {
            $data = array(
                "id" => $row['id'],
                "name" => $row['name'],
                "shortdesc" => $row['shortdesc'],
                "image" => $row['image'] 
                );
        }
    }
    $Q->free_result();
    return $data;
}

Я совершенно уверен, что где-то должна быть синтаксическая ошибка - но все еще не понимаю, почему она не показывает никакой ошибки, даже если я установил error_reporting E_ALL в функции индекса ..

Ответы [ 3 ]

2 голосов
/ 18 марта 2010

Первый порт вызова - запустить php -l в командной строке для вашего контроллера и всех моделей, которые вы изменили, а затем отменили.

% php -l somefile.php

Вероятно, в одном из файлов произошла ошибка синтаксического анализа, и в файле php.ini для параметра «Ошибки отображения» установлено значение «Выкл.». Вы должны включить отображение ошибок для разработки и отключить для производства, если вы этого еще не сделали.

(Правка: в приведенном выше примере вы пропустили закрытие} класса. Возможно, это так.)

1 голос
/ 18 марта 2010

Убедитесь, что error_reporting в index.php имеет значение E_ALL, и опубликуйте свой код для рассматриваемой модели.

После просмотра вашей функции, я подозреваю, что это вызвано $this->db->orderby("rand()"); Для активной записи это должно быть $this->db->order_by('id', 'random');

Обратите внимание, что orderby устарела, вы все еще можете использовать его, но имя новой функции - order_by

0 голосов
/ 19 марта 2010

Не уверен, но это также может быть вызвано тем, что php "display_errors" имеет значение false. Вы можете изменить его в файле php.ini.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...