为什么kohana找不到我的变量

时间:2014-01-17 08:14:23

标签: php kohana bootstrapping

我坚持认为我的变量找不到的原因。

这是错误的图片 enter image description here

问题在于我设定了我的路线以及我认为需要的一切。

她我的bootstrap.php

Route::set('categorie', 'categorie/<item>', array('item' => '.*'))
        ->defaults(array(
            'controller' => 'categorie',
            'action' => 'index',
        ));

在我看来,这是一条正确的路线。

在这里你得到了controller

<?php

defined('SYSPATH') or die('No direct script access.');

class Controller_Categorie extends Controller_Base_Main {

    public function action_index() {
          /* 
         * Hier maakt hij de content template aan van een bepaalde view
         * Ook worden hier de standaard views gezet 
         */
        $menuview = View::factory('menu');
        $categorietree = View::factory('categorietree');
        $footer = View::factory('footer');
        $this->template->menu = $menuview;
        $this->template->categorietree = $categorietree;
        $this->template->footer = $footer;
        /* 
         * Hier maak een een view aan waar ik 2 sql querys aan bind zodat de sql niet midden in de tekst hoeft
         */
        $view = View::factory('categorie')
                -> bind('categorieen', $cat)
                -> bind('categorie_artikelen', $cat_artikelen);

        /* 
         * categorieen sql uitvoeren
         */
        $cat = ORM::factory('categorie')
                ->select('categorie_naam', 'categorie_inhoud')
                ->where('categorie_id','=',':CategorieID')
                ->find_all();

        /* 
         * categorie_artikelen sql uitvoeren
         */
        $cat_artikelen = ORM::factory('categorie')
                ->select('A.artikel_naam','A.artikel_id')
                ->join(array('artikelen', 'A'), 'LEFT OUTER')->on('AC.artikel_id', '=', 'A.artikel_id')
                ->join(array('categorieen', 'C'), 'LEFT OUTER')->on('AC.categorie_id', '=', 'C.categorie_id')
                ->where('AC.categorie_id', '=', ':CategorieID')
                ->order_by('A.artikel_naam');

        $this->template->content = $view;
     }
}

这是我的控制器。我不知道它有什么问题。

这是我的model

<?php
class Model_Categorie extends ORM
{
    protected $_table_name = 'categorieen';
    protected $_primary_key = 'categorie_id';

    /*
     * Veld categorienaam
     * returns string
     */
    public function getNaam()
    {
        return $this->categorie_naam;
    }
    /*
     * Veld categorieinhoud
     * returns string
     */
    public function getInhoud()
    {
        return $this->categorie_inhoud;
    }
}

我希望这也是正确的写作方式。

这是我用于view

controller
<div style="   
    padding: 15px;
    background-color: white;
    border: 1px solid #EEE;
    ">
    <?php foreach($cat as $c): ?>
            <h1><?php echo $c['categorie_naam']; ?></h1>
            <p class="article"><?php echo nl2br($c['categorie_inhoud']); ?></p>
    <?php endforeach; ?>

    <table class="table table-condensed">
            <?php foreach($cat_artikelen as $s) : ?>
                    <?php $letter = strtoupper($s['artikel_naam'][0]); ?>

                    <?php if ($letter != $prev_row): ?>
                            <tr>
                                    <td><h4><b><?php echo $letter; ?></b></h4></td>
                            </tr>
                    <?php endif; ?>

                    <tr>
                            <td><a href="artikel.php?id=<?php echo $s['artikel_id']; ?>">
                            <i class="file-icon"></i> <?php echo $s['artikel_naam']; ?>
                            </a></td>
                    </tr>
                    <?php $prev_row = $letter; ?>
            <?php endforeach; ?>
    </table>
</div>

我希望有人可以帮助我,我真的陷入了困境。

1 个答案:

答案 0 :(得分:1)

在您的控制器中,您需要在$view下面移动$cat作业。

/* 
 * categorieen sql uitvoeren
 */
$cat = ORM::factory('categorie')
           ->select('categorie_naam', 'categorie_inhoud')
           ->where('categorie_id','=',':CategorieID')
           ->find_all();

$view = View::factory('categorie')
           ->bind('categorieen', $cat)
           ->bind('categorie_artikelen', $cat_artikelen);

您要将变量设置为$categorieen,因此在您的视图中,您需要将foreach更新为以下内容:

<?php foreach($categorieen as $c): ?>