Категории

Итак, в последнем уроке нам удалось добавить форму категории, которая позволила нам добавлять категории в базу данных, но мы все еще не можем видеть доступные категории (добавленные категории), поэтому мы собираемся запросить базу данных и получить категории, а затем визуализировать их на столе (используя возможности начальной загрузки) в категориях, также нам нужно иметь возможность управлять доступными в настоящее время категориями (удалить или изменить), и этот шаг будет рассмотрен в следующем уроке о том, как использовать ajax для достижения этого .

Перво-наперво Сначала нам нужно получить категории из нашей базы данных в виде массива, поэтому в CategoryController методом index() мы извлекаем категории, упорядоченные по метке времени created_at.

public function index()
{
    $categories = Category::orderBy('created_at', 'desc')->get();
   
    //We use the With method to pass data from controller to the view 
    return view('pages.category')->with('categories', $categories);
}

поэтому мы получаем категории и передаем их в представление с помощью метода with(), который принимает пары (ключ, значение).

Теперь в категории HTML/PHP мы отображаем категории в таблице после проверки наличия хотя бы одной категории, поэтому мы используем @if и @endif в блейд-шаблон для выражения обычного оператора PHP if

<div id="categories-table" class="table-responsive">

      @if(count($categories) > 0) 

           <table class="table">

              <tr>
                    
                 <th>ID</th>
                 <th>Category</th>
                  <th>Author</th>
                  <th>Created At</th>
                  <th>Updated At</th>
                  <th>Edit</th>
                  <th>Remove</th>
                    
               </tr>

               @foreach($categories as $i=>$category)

              <tr>
                <td>{{ $i + 1 }}</td>
                <td>{{ $category->name }}</td>
                <td>{{ $category->author }}</td>
                <td>{{ $category->created_at }}</td>
                <td>{{ $category->updated_at }}</td>
                <td><a data-js="open-edit"><span id="{{ $category->id }}" class="btn btn-warning">Edit</span></a></td>
                        <td><a data-js="open-remove"><span id="{{ $category->id }}" class="btn btn-danger">Remove</span></a></td>
              </tr>
         @endforeach

       </table>

       @endif
</div>

как вы знаете, мы используем {{ " To echo Things → " }}, так что это просто сделает вашу жизнь проще, также мы используем здесь цикл @foreach, как и любой другой цикл, мы отображаем каждую категорию с кнопками Edit и Remove для управления категории, мы рассмотрим этот шаг в следующем уроке, используя (AJAX с Laravel).

Теперь вы можете попробовать добавить новую категорию, и вы увидите, что она будет указана в таблице текущих категорий, также вы можете отобразить сообщение, сообщающее пользователю (Нет доступных категорий) для лучшего взаимодействия с пользователем.

Сообщения

Поэтому, если вы собираетесь сделать свою CMS немного более мощной, вам нужно будет добавить сообщения для информирования пользователя о том, что на самом деле происходит за кулисами, если есть ошибки или просто показать сообщение об успешном завершении (например: Категория успешно добавлена ), поэтому Пользователь будет более удовлетворен, увидев эти сообщения, и это называется Взаимодействие с пользователем (UX).

Итак, для этого мы добавим новый файл, назовем его messages.blade.php и поместим его в папку inc. Итак, в laravel по умолчанию есть коллекция, содержащая сообщения об ошибках, которые могут возникнуть во время определенного процесса, для этого мы может отображать ошибки, зацикливая массив ошибок

@if(count($errors) > 0)
    @foreach($errors->all() as $error)
        <div class="alert alert-danger">{{ $error }}</div>
    @endforeach
@endif

также нам нужно получить сообщения сеанса. Итак, допустим, что мы создали экземпляр категории и присвоили ему имя категории, вам может потребоваться вернуть сообщение об успехе или ошибке, поэтому мы используем сеанс для передачи данных из одна страница на другую

поэтому мы отображаем данные сеанса

@if(session('Error'))
    <div class="alert alert-danger">{{ session('Error') }}</div>
@endif

@if(session('Success'))
    <div class="alert alert-success">{{ session('Success') }}</div>
@endif

и это все для отображения данных сеанса.

Чтобы показать сообщение об успешном добавлении категории! использовать в методе Store()

// We Use Flash method to display the message only once on page reload 
//The Session is an Associative Array with (Key, Value) Pairs
session()->flash('Success', 'Category Named: ' . $category->name . ' Addedd Successfully!');

Теперь попробуйте добавить новую категорию. Будет получено сообщение об успешном выполнении, что все работает нормально, поэтому использование сообщений очень важно как для разработчика, так и для пользователя.

В следующем учебном пособии мы добавим функциональность к кнопке «Изменить и удалить» для управления категориями.