[英]Posts not displaying properly after if else loop put in
2個問題:
1)我的視圖文件(對於單個帖子頁面)中的“最近的帖子”功能不再顯示帖子。
2)在顯示所有帖子的文章頁面上,沒有的帖子不起作用。 當我單擊該帖子時,它重定向到/ articles。 只發布有工作的帖子。
我的帖子有兩種URL:slug和url。 區別? 網址更長。 子彈頭較短,用於SEO。 為什么不只使用? 因為對於某些帖子,我不想浪費時間來創建一個子彈。 這些帖子的子句列中的數據為空白/空。 生成的網址很好。 對於其他職位,我想提出一個建議。
這是我發布帖子的控制器代碼。
舊版本:
public function viewpost($url,$slug){
if ( empty($slug) ) {
$url ='articles/'.$url;
} else {
$url = 'articles/'.$slug;
}
$posts = posts::where('post_status', '')->get();
if ( empty($slug) ) {
$post = $posts->where('url', $url)->first();
} else {
$post = $posts->where('slug', $slug)->first();
}
if ( empty($post) )
return redirect()->back();
return view('viewpost')->with('post', $post)->with('posts', $posts);
}
新版本(已修改):
public function viewpost($url){
$posts = posts::where('post_status', '');
$post = $posts->where('url', $url)->orWhere('slug' , $url)->first();
if ( empty($post) )
return redirect()->back();
return view('viewpost')->with('post', $post)->with('posts', $posts);
}
修改后的新控制器文件毫不費力地打破了職位。
這是最近發生的帖子的查看文件:
<h3>Recent Posts</h3>
@foreach($posts as $post)
<p><a href="{{ URL::to($post->url) }}"><img style="width:100px;" src="{{asset('thumbnails/'.$post->thumbnail)}}" class="responsive"></a><br>
<a href="{{ URL::to($post->url) }}">{{substr(($post->title),0,88)}}..
</a></p>
@endforeach
我的路線代碼:
Route::get('articles/{url}', 'postsController@viewpost');
我的帖子頁面的查看文件代碼,其中顯示了所有帖子:
@foreach($post as $post)
<div class="col-md-4">
<div class="content">
@if(!empty($post->slug))
dd(11);
<a href="{{'articles/'.$post->slug}}" class="latest-heading">{{substr(($post->title),0,88)}}..</a>
@else
dd(22);
<a href="{{($post->url)}}" class="latest-heading">{{substr(($post->title),0,88)}}..</a>
@endif
<img style="padding: 5px; width:100%; height:218px;" src="{{asset('thumbnails/'.$post->thumbnail)}}" class="img-responsive">
</div>
</div>
@endforeach
1)我的視圖文件(對於單個帖子頁面)中的“最近的帖子”功能不再顯示帖子。
這是因為與您的舊代碼不同,您沒有檢索數據:
$posts = posts::where('post_status', '');
這只會返回您的查詢生成器對象,因此要獲取這些帖子,您需要添加-> get();。 獲取集合,因此代碼變為:
$posts = posts::where('post_status', '')->get();
之后,您可以通過(-> first())過濾集合,以過濾出您要查找的帖子,因為它不支持orWhere方法(或者像您在舊代碼中那樣僅使用兩個where()) :
$post = $posts->filter(function($object, $key) use ($url) {
return !strcmp($object->url, 'articles/'.$url) or !strcmp($object->slug, $url);
})->first();
同時更正:
@foreach($post as $post)
2)在顯示所有帖子的文章頁面上,沒有的帖子不起作用。 當我單擊該帖子時,它重定向到/ articles。 只發布有工作的帖子。
我不確定,但是我在您的代碼中看到了什么,並且基於上面顯示的舊方法,我認為您在這里遇到了問題:
<a href="{{'articles/'.$post->slug}}" ...
<a href="{{($post->url)}}" ...
第二個也不需要是(?):
<a href="{{'articles/'.$post->url}}" ...
這可能是導致因素:
return view('viewpost')->with('post', $post)->with('posts', $posts);
並且您的循環正在執行:
@foreach($posts as $post)
而您的另一個循環正在執行:
@foreach($post as $post)
如果你看看你with
你逝去的兩個post
和posts
,因此它可能與混合環狀變量with
變量。
嘗試將with
變量的鍵更改為更獨特的鍵。 您可以在單個$post
變量之前添加_
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.