我是php / mvc的新手并尝试使用小型网站。
我想根据选择的查询更改为按钮的状态。这是一个简单的'收藏'切换按钮。查询将查看我的数据库的“favourite
”表,其中包含“isFav
”字段(0或1)。
如果查询找到结果(1),并且颜色默认(btn-),我希望按钮颜色为绿色(btn-success)默认)如果不是(0)。
应该简单但我似乎无法得到它。我认为我在视图和模型之间传递变量时感到困惑。
我的 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
}
}
}
我的 books.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();
}
}
我的 itemView.php html按钮代码如下;
echo '<button class="btn '.$css.'"></button>';
页面上打印的唯一内容是btn-success或btn-default(左上角)。只要我点击按钮,这就会切换。因此,我认为我的查询正在运行。
代码道歉我是新手,我非常感谢所提供的任何帮助,甚至是正确方向的一点。
答案 0 :(得分:1)
试试这个:
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>";
原因:您的$css
方法中的变量isFav()
在您的视图中未知(变量的范围是isFav()
方法)。
这一行:
$ itemView_model-&GT; isFav();
请求此函数的返回值,因此,显然返回值bust以便可用。
您看到看似正确答案的原因是echo
调用与$css
变量的范围相同。