2016-12-28 71 views
0

我正在處理與this one類似的事情。但我試圖根據是否有人加入該組來分配按鈕「加入」或「輸入」。問題是我不知道如何將變量從類別ID($cats_id)傳遞到視圖文件。如何將視圖中的變量傳遞給mvc(PHP)中的模型

我在模型中創建了一個函數來檢查行是否存在並返回true。

// check if joined the group 
    public static function checkIfJoined($cats_id) 
    { 
     $database = DatabaseFactory::getFactory()->getConnection(); 
     $users_id = Session::get('user_id'); 

     $sql = "SELECT cats_id,users_id FROM categories_joined WHERE users_id = :users_id AND cats_id = :cats_id"; 
     $query = $database->prepare($sql); 
     $query->execute(array(':users_id' => $users_id, ':cats_id' => $cats_id)); 

     // fetchAll() is the PDO method that gets all result rows 
     if ($query->rowCount() >= 1 || Session::get('user_account_type') == 7) { 
      return true; 
     } 
    } 

然後在控制器中,我將模型渲染到視圖中。

public function index() 
{ 
    $cats_id = ""; // this doesn't work right obviously 
    $this->View->render('dashboard/index', array(
     'categories' => DashboardModel::getAllCategories(),    
     'joined' => DashboardModel:: checkIfJoined($cats_id)   
    )); 
} 

在視圖中,我將預覽函數'categories'中的變量傳遞給視圖。

<?php if ($this->categories) { ?> 

        <?php foreach($this->categories as $key => $value) { ?> 
... 
<?php $cats_id = $value->cat_id; if ($this->joined == true): ?>Enter 
<?php else: ?>Join 
<?php endif; ?> 
+0

您是否試圖將視圖中的數據傳遞給控制器​​? – BugHunterUK

回答

2

因爲視圖是在控制器之後解析的,所以你永遠無法將任何東西從視圖傳遞給控制器​​。

你可以在這裏做的是通過在你的視圖中調用DashboardModel::checkIfJoined($cats_id)直接使用模型,但這不是完美的方法。

在控制器中準備好數據然後傳遞給控制器​​會更好。

實施例控制器

public function index() 
{ 
    $this->View->render('dashboard/index', array(
     'categories' => DashboardModel::getAllCategories(), 
     'userCategories' => DashboardModel::getUserCategories() 
    )); 
} 

實施例視圖

<?php 
if ($this->categories) { 
    foreach ($this->categories as $key => $value) { 
     if (in_array($value->id, $this->userCategories) { 
      echo 'Joined'; 
     } else { 
      echo 'Join'; 
     } 
} 
?> 

在這個例子中DashboardModel::getUserCategories()應從SELECT cats_id FROM categories_joined WHERE users_id = :users_id返回結果。

+0

視圖文件中的更改如何? – Guliverkel

+0

@Guliverkel編輯 –

+0

@Guliverkel可能最好是獲取用戶加入的所有類別並將它們傳遞給視圖。在那裏你可以檢查給定的類別ID是否存在於該列表中。這將比單獨查詢中檢查每個類別更高效。 –