感谢阅读。 我是Laravel的新手,我想尝试用@foreach刀片更改数据库的输出,有一个例子:
这是路线:
Route::get('/home', 'warnajati@index');
这是控制器:
public function index()
{
$post = DB::table('posts')->get();
return view('warnajati', ['posts'=>$post]);
}
这是观点:
@foreach ($posts as $post)
<div class="title"><h3>{{$post->title}}</h3></div>
@endforeach
输出$post->title
为"This is The Looonger Title you ever know"
,
我希望通过Wordlimit()
函数使标题更短:
function wordlimit($text, $limit=10)
{
if (strlen($text)>$limit) {
# code...
$word = mb_substr($text,0,$limit-3)."...";
}else{
$word =$text;
}
};
我必须如何以及在哪里将该功能放在laravel项目中?请帮帮我..
答案 0 :(得分:4)
您的函数没有返回值... Laravel已经具有此功能:http://laravel.com/docs/5.3/helpers#method-str-limit
@foreach ($posts as $post)
<div class="title"><h3>{{ str_limit($post->title, 10) }}</h3></div>
@endforeach
答案 1 :(得分:2)
您可以使用Laravel's Accessor
在模型中执行此操作:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public function getShortTitleAttribute($value)
{
// return shortened title here ...
}
}
然后你可以在刀片中使用它:
{{ $post->short_title }}
希望这有帮助!
答案 2 :(得分:0)
您可以将您的函数放在libraries文件夹的 helpers.php 文件中。 只需确保在composer.json文件中自动加载helpers.php文件:
"autoload": {
"files": [
"libraries/helpers.php"
],
},
如果你必须将它添加到你的composer.json,你还必须从终端运行composer dump-autoload
命令。