在Eloquent视图中使用控制器会出现错误:htmlspecialchars()函数希望参数1是字符串,但是给定的是对象。

7 浏览
0 Comments

在Eloquent视图中使用控制器会出现错误:htmlspecialchars()函数希望参数1是字符串,但是给定的是对象。

我想从控制器中获取数据,在我的视图中使用在一个div中。

我的TagController如下:

class TagController extends Controller
{
    //
    public function index(){
        $tags = Tag::all();
        return $tags;
    }
}

我的视图包含以下代码来访问这个:

{{ $tags = new App\Http\Controllers\TagController,
    $tags->index()
}}

->不能使用关键字use,因为Eloquent不允许

->尝试将函数设置为静态并使用TagController::index(),报错无法将函数设置为静态

->不能使用这个控制器来路由和重定向,因为视图已经链接到另一个控制器,我不想重新加载

如何使用这个控制器中的函数?

对不起,这个问题很傻,请帮忙,我是Laravel新手

0
0 Comments

使用控制器在Eloquent视图中会出现错误:htmlspecialchars()期望参数1为字符串,但给出的是对象。这个问题出现的原因是在模板文件中使用了错误的blade标签来设置变量。正确的做法是通过控制器将变量传递给视图。

根据文档的说明,在视图中嵌入PHP代码是有用的。可以使用Blade指令在模板中执行一块普通的PHP代码。

然而,老实说,这并不是理想的做法。在一个视图中访问另一个控制器是不合适的,相反,应该按照评论中的建议将变量从视图的相应控制器传递过来。

解决这个问题的方法是在控制器中获取变量的值,并将其传递给视图。下面是一个示例代码:

$tags = new App\Http\Controllers\TagController;
$tags->index();
return view('your_view')->with('tags', $tags);

这样,在视图中就可以使用$tags变量了。这种方法更好,因为它遵循了MVC架构的原则,将数据获取和视图渲染分开处理,使代码更加清晰和可维护。

总之,通过控制器在Eloquent视图中使用echo来设置变量会导致错误。正确的做法是在控制器中获取数据并将其传递给视图。这样可以避免错误,并且更符合MVC的设计原则。

0