Как узнать имя контроллера и метода внутри блейд-файла в Laravel 6? - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в Laravel. Я практиковался в создании блога в Laravel 6 . У меня есть layout.blade.php файл, в котором написаны все основные c HTML. В разделе содержимого layout.blade file я хочу @include другой файл блейда в зависимости от контроллера и имени метода.

У меня есть 2 контроллера, HomeController и ArticleController. В файле HomeController есть метод index(), который возвращает представление home.blade.php. И снова home.blade.php @extends layout.blade.php. Теперь я хочу узнать, какой контроллер и метод вызвали файл представления из файла layout.blade.php.

Я хочу что-то вроде этого -

<!-- This is layout.blade.php file -->
<html>
<head>
</head>
<body>
  @if (Controller == HomeController AND Method == index)
    @include('home')
  @endif

  @if (Controller == ArticleController AND Method == index)
    @include('articles')
  @endif
</body>
</html>

Я не нашел ответа в Google , У меня есть несколько вопросов в StackOverflow, но у них очень запутанные ответы, и эти версии тоже старше.

Спасибо.

РЕДАКТИРОВАТЬ 1:

  1. Из-за низкая оценка репутации, я не могу ответить в комментариях. Поскольку я новичок, я знаю некоторые базовые c метки лезвия, поэтому, если есть какое-либо другое решение для достижения этой цели, пожалуйста, поделитесь им со мной.
  2. Я нашел Get Laravel 5 контроллер имя в поле зрения , прежде чем задать этот вопрос. Но я не думаю, что это отвечает на мой вопрос.
  3. Я знаю, Controller == HomeController AND Method == index сумасшедший. Я только что проиллюстрировал, что мне нужно. Я знаю теги basi c @yield и @section, но я не хочу использовать это в моем случае. Потому что, если я сделаю раздел карты / дома целиком в другом файле, позже я могу вызвать его в других файлах. Если я использую @yield, мне придется использовать @section и в других файлах, чего я не хочу делать.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

Route::currentRouteAction() метод, кажется, то, что вы хотите. Это в документации API.

string|null currentRouteAction()

Получить текущее действие маршрута.

Возвращаемое значение string|null

https://laravel.com/api/6.x/Illuminate/Routing/Router.html#method_currentRouteAction

0 голосов
/ 08 апреля 2020

если я вас правильно понимаю, вам не нужно делать эту сумасшедшую вещь, подобную этой

Controller == HomeController AND Method == index

Если все, что вам нужно, это настроить главную страницу. Laravel делает это действительно просто.

Это главная страница.

<!-- Stored in resources/views/layouts/app.blade.php -->

<html>
    <head>
        <title>App Name</title>
    </head>
    <body>
        <div class="container">
            @yield('content')
        </div>
    </body>
</html>

Для других страниц

<!-- Stored in resources/views/index.blade.php -->

@extends('layouts.app')

@section('content')
    <p>This is my body content. From index page.</p>
@endsection

А для контроллера вы просто возвращаете blade. php просмотр имени файла.

    public function index()
    {
        return view('index');
    }
...