我有这段代码:
<td><a href="http://example.com/forum/{{ $forum->seo_name }}/{{ $forum->id }}">{{ $forum->name }}</a></td>
我不想用
{!! generateForumLink($forum->seo_name, $forum->id) !!}
我该怎么办?
我在控制器中创建了简单的功能:
public function generateForumURL($name, $id)
{
return "http://localhost/".$name."/".$id;
}
我怎样才能将它用作模板?也许存在更好的方法来做到这一点?
答案 0 :(得分:3)
我通常在helpers.php
文件夹中创建一个app
文件,并将其添加到composer.json
的自动加载部分:
"autoload": {
"classmap": [
...
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/helpers.php" // Add this file
]
},
在helpers.php
中,按如下方式添加功能:
function generateForumURL($name, $id)
{
// Using the url() helper, so you don't have to manually switch between
// localhost and the production website name
return url($name . "/" . $id);
}
当你完成时,不要忘记运行composer dump-autoload
。
另一种方法是简单地向getUrlAttribute
模型添加Forum
,返回网址:
class Forum extends Eloquent {
...
public function getUrlAttribute()
{
return url($this->name . '/' . $this->id);
}
}
现在,您可以在任意位置使用$forum->url
作为字符串。
您可以将模板保存为视图(我通常在partials
文件夹中保存)并将其包含在您需要的任何位置:
档案views/forums/partials/link.blade.php
:
@if(isset($forum))
<a href="{{ $forum->url }}">{{ $forum->name }}</a>
@endif
将其包含在另一个视图中,如下所示:
@include('forums.partials.link', ['forum' => $forum])