2013-11-14 3 views
0

Я немного смущен используя fuelPHP 1.7.Основы FuelPHP, используя результат модели в представлении

Контроллер

class Controller_Website extends Controller 
{ 
    public function action_index() 
    { 
     // http://fuelphp.com/docs/general/views.html 

     $data = Website::get_results(); 

     //var_dump($data) // (data is found here); 

     $views = array(); 
     $views['head'] = View::forge('common/head', $data); 
     $views['header'] = View::forge('common/header', $data); 
     $views['sidebar'] = View::forge('common/sidebar', $data); 
     $views['content'] = View::forge('common/content', $data); 
     $views['footer'] = View::forge('common/footer', $data); 

     // return the rendered HTML to the Request 
     return View::forge('website', $views)->render(); 
    } 
} 

Модель

class Website extends \Model 
{ 
    public static function get_results() 
    { 
     // Database interactions 
     $result = DB::select('menu', 'url', 'title', 'text') 
      ->from('aaa_website') 
      ->where('id', '=', 1035) 
      ->and_where('visible', '1') 
      ->execute(); 

     return $result; 
    } 
} 

Все хорошо SOFAR. Данные запрашиваются и находятся в контроллере. То, что я пытаюсь сделать, чтобы использовать эти данные в моих:

(гнездовые) зрений

<html> 
<head> 
    <?php echo $head; ?> 
</head> 
<body> 
<header> 
    <div class="container"> 
     <?php echo $header; ?> 
    </div> 
</header> 
<div class="row"> 
    <div class="container"> 
     <div class="col-md-4"> 
      <?php echo $sidebar; ?> 
     </div> 
     <div class="col-md-8"> 
      <?php echo $content; ?> 
     </div> 
    </div> 
</div> 
<footer> 
    <div class="container"> 
     <?php echo $footer; ?> 
    </div> 
</footer> 
</body> 
</html> 

Head вид (вложенный):

<title><?php echo $title; ?></title> 

просмотра контента (вложенный):

<h1><?php echo $title; ?></h1> 
<div class="welcome_user"><?php echo $text; ?></div> 

И так далее.

Переменные в представлении в этом примере недоступны, поскольку они явно не установлены в контроллере. Нужно ли их устанавливать явно или передавать объект данных также возможно? Если да, то каким образом я могу правильно обращаться к данным объектов? FuelPHP здесь не хватает хороших примеров, и я застрял сейчас.

Как это сделать?

ответ

1

Данные вида преобразуются из массива, индексированного для просмотра переменной с именем. Итак:

View::forge('something', array('param' => 'value')); 

будет соответствовать следующей точки зрения:

<h1><?=$param?></h1> 

Где дела идут не так есть то, что вы передаете обычный результат DB к виду. Вы должны были бы получить первый результат из результата базы данных, например:

class Website extends \Model 
{ 
    public static function get_results() 
    { 
     // Database interactions 
     $result = DB::select('menu', 'url', 'title', 'text') 
      ->from('aaa_website') 
      ->where('id', '=', 1035) 
      ->and_where('visible', '1') 
      ->as_assoc() 
      ->execute() 
      ->to_array(); 

     return reset($result); 
    } 
} 

Обратите внимание, что я впервые использовал ->to_array() для преобразования результирующего объекта в массив, а затем reset() получить первый результат. Я также добавил ->as_assoc(), чтобы убедиться, что вы получили результат массива, ->as_object() предоставит вам экземпляр stdClass.

+0

Спасибо, что поддержал меня! – Klaaz

+0

Добро пожаловать, наслаждайтесь использованием FuelPHP :) –

 Смежные вопросы

  • Нет связанных вопросов^_^