如何在@foreach中使用函数 - Laravel

时间:2016-11-16 14:53:27

标签: php laravel laravel-5 foreach blade

感谢阅读。 我是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项目中?请帮帮我..

3 个答案:

答案 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命令。

有关详细信息,请查看Best practices for custom helpers on Laravel 5