2016-11-16 104 views
0

感謝您的閱讀。 我是新的Laravel,我想嘗試改變數據庫的輸出與@foreach刀片,還有就是例子:如何使用@foreach中的函數 - Laravel

這是路線:

Route::get('/home', '[email protected]'); 

這是控制器:

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 

與輸出是"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

你的函數沒有返回值... Laravel已經有這個函數:https://laravel.com/docs/5.3/helpers#method-str-limit – Devon

+0

你的wordlimit函數在哪裏?您可能可以像平常一樣使用該功能,具體取決於功能。 – aynber

回答

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 }} 

希望這有助於!

+0

你真的應該儘量避免在你的模型中放置相關的邏輯視圖(格式化),否則你最終會得到一些非常龐大的模型。 – Devon

+0

我知道,但它也不是壞的方式,就好像我們沒有找到'str_limit'這樣的邏輯我們也可以使用它。它只是Laravel的方式來解決複雜的事情,並使代碼可讀並且保持 –

+0

The Laravel的方式涉及問題的分離。如果正在使用mutators來顯示格式,這將被違反。在我看來,像這樣設置字符串限制在視圖的上下文中才有意義。 – Devon

0

你可以把你的函數放在helpers.php文件中來自libraries文件夾。 只要確保你有composer.json文件自動加載helpers.php文件:

"autoload": { 
    "files": [ 
     "libraries/helpers.php" 
    ], 
}, 

如果你必須添加到您的composer.json你也將運行從終端composer dump-autoload命令。

欲瞭解更多信息,請查看Best practices for custom helpers on Laravel 5

相關問題