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(); 
    } 
} 

모델 SOFAR 잘

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; 
    } 
} 

. 데이터가 쿼리되고 컨트롤러에서 발견됩니다.

(중첩)보기 (중첩)

<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> 

머리보기 :

<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 결과를 전달할 것입니다. 이 같은 데이터베이스 결과에서 첫 번째 결과를 얻기 위해 필요한 것 : 그럼 내가 먼저 배열에 결과 개체를 변환하는 ->to_array()을 사용했습니다

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); 
    } 
} 

주, reset()를 첫 번째 결과를 얻을 수 있습니다. 또한 배열 결과를 얻으려면 ->as_assoc()을 추가했습니다. ->as_object()은 stdClass 인스턴스를 제공합니다.

+0

나를 지켜 주셔서 감사합니다! – Klaaz

+0

FuelPHP를 사용해 주셔서 감사합니다. :) –