首页 > 解决方案 > 在 Laravel 的视图中使用 2 个控制器函数

问题描述

我想在我的视图中有两个循环,所以我写了这两个函数

public function index()
{
    $books = Book::orderBy('created_at', 'desc')->take(10)->get();
    return view('bookpage')->with('books', $books);
}

public function loggedin()
    {
        $books = Book::orderBy('RAND()')->take(1)->get();
        return view('bookpage')->with('books', $books);

    }

view我有

<!--First Loop -->   
    @foreach($books as $book)
          <div class="col-md-6">
            <div class="out-box">
              <h2>{{ $book->name }}</h2>
              <h3>{{ $book->author->name }}</h3>
              <br>
              <a href="#" class="start-btn">Start Reading</a><br><br>
              <a href="#" class="buy-btn"><img src="assets/img/cart-buy.png" width="13px"/>&nbsp; Buy</a>
            </div>
          </div>
        </div>
      </div>
      <div class="col-md-6">
        <input id="aboutbook" type="radio" name="tabs" checked>
        <label for="aboutbook" class="aboutbook">About This Book</label>
        <input id="bookreview" type="radio" name="tabs">
        <label for="bookreview" class="bookreview">Reviews</label>
        <hr style="background-color:black;">
        <section style="padding-top:5px;" id="bookabout" >
          <div class="row">
            <div class="col-md-12">
            <p>{{ $book -> about }}</p>
              <h1>About the Author</h1>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-4 col-md-3 col-6">
              <img src="assets/img/Ellipse.png" class="rounded-circle" width="120px">
            </div>
            <div class="col-sm-4 col-md-4 col-6">
              <h1>{{ $book->author->name }}</h1>
              <h4>{{ $book->author->about }}</h4>
            </div>
            <div class="col-sm-4 col-md-5">
              <div id="learnbtn">
                <a href="#" class="learn-btn">Learn More</a>
              </div>
            </div>
          </div>
        </section>
        <section style="padding-top:5px;" id="bookabout1" >
          jjjjjjj
        </section>
      </div>
    </div>
  </div>
      @endforeach
</section>

<!--Second Loop -->   
    @foreach($books as $book)
      @if($book->recommended === 1)

      <div class="col-1-5">
        <div class="home-catalog-image">
        <a href="{{ $book->image_url }}" target="_blank">
      <!--  <img src="{{ $book->image }}" alt="trending image" /> -->
        <img src="{{ $book->image_url }}" class="img-responsive" alt="{{ $book->image_url }}">

        </a>

      <!-- <img src="{{ asset('/books/'.$book->image) }}" alt="trending image" /> -->
        </div>
        <p class="author">{{ $book->author->name }}</p>
        <h1 class="book-title">{{str_limit($book -> name, 20) }}</h1>
      </div>
      @endif 

      @endforeach

在我的 web.php Route::get('/', 'WelcomeController@index')->name('welcome');

我想在视图中调用另一个函数,虽然我知道方法不对,但我不知道该怎么做。

标签: laravel

解决方案


您不必为登录用户创建两种不同的方法,只需使用

public function index()
{
      if(auth()->user()) {
            $books = Book::orderBy('RAND()')->take(1)->get();
      } else $books = Book::orderBy('created_at', 'desc')->take(10)->get();
    return view('bookpage')->with('books', $books);
}

在视图文件使用

@auth
      //code for logged in user
@else
      //code for guest user
@endauth

推荐阅读