检查和/或设置按钮状态 mvc php


Check and/or set button state mvc php

我是php/mvc的新手,正在尝试一个小网站。

我想根据选择查询更改为按钮的状态。这是一个简单的"收藏夹"切换按钮。查询将在数据库的"favourite"表中查找"isFav"字段(0 或 1)。

如果

查询找到结果 (1),我希望按钮颜色为绿色(btn-success),如果不是 (0),则颜色为默认值(btn-默认值)。

应该很简单,但我似乎无法理解。我想我对在我的视图和模型之间传递变量感到困惑。

我的books_model.php代码如下

class BooksModel
{
    public function isFav()
        {
            $book_id = $_GET['id']; // from url
            $user_id=$_SESSION['user_id'];
            $sql = "SELECT isFav FROM favourite WHERE book_id = :book_id AND user_id = :user_id AND isFav = 1";
            $query = $this->db->prepare($sql);
            $query->bindParam(':book_id', $book_id);
            $query->bindParam(':user_id', $user_id);
            $query->execute();
            if ($query->rowCount() == 1) {
                    $css = 'btn-success';
                    echo $css; //for testing
                } else {
                    $css = 'btn-default';
                    echo $css; // for testing
                }
        }
}

我的书.php控制器如下;

class Books extends Controller
{
    function itemView()
        {
            $itemView_model = $this->loadModel('Books');
            $this->view->books = $itemView_model->itemView();
            $this->view->render('books/itemView');  
            $itemView_model->isFav();  
        }
}

我的项目视图.php html按钮代码如下;

echo '<button class="btn '.$css.'"></button>';

页面上打印的唯一内容是btn成功或btn默认值(左上角)。每当我单击按钮时,这都会切换。因此,我认为我的查询正在工作。

对代码表示歉意,我是新手,我非常感谢提供的任何帮助,即使是正确的方向。

试试这个:

public function isFav() {
    (...)
    if ($query->rowCount() == 1) {
        $css = 'btn-success';
        echo $css; //for testing
    } else {
        $css = 'btn-default';
        echo $css; // for testing
    }
    return $css;
}

在您看来:

echo "<button class='"btn ".$itemView_model->isFav()."'"></button>";

原因是:isFav() 方法中的变量$css在您的视图中未知(变量的作用域是 isFav() 方法)。
这一行:
$itemView_model->isFav();请求此函数的返回值,因此,很明显,返回值 bust 以便可用。
您看到打印看似正确的答案的原因是echo调用与$css变量位于同一范围内。