簡體   English   中英

在if else循環進入后帖子無法正確顯示

[英]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你逝去的兩個postposts ,因此它可能與混合環狀變量with變量。

嘗試將with變量的鍵更改為更獨特的鍵。 您可以在單個$post變量之前添加_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM