Laravel – гайд по выживанию. Nulls

Чтение книги онлайн.

Читать онлайн книгу Laravel – гайд по выживанию - Nulls страница 5

Автор:
Жанр:
Серия:
Издательство:
Laravel – гайд по выживанию - Nulls

Скачать книгу

'Strength: ' . $zombie->strength . '<br />'; echo 'Health: ' . $zombie->health . '<br />';

      });

      Если раньше наше приложение не могло найти класс Zombie, то с появлением модели мы можем обращаться к нему без проблем.

      Стоит отметить, что, вызывая Zombie, мы обращаемся именно к классу Zombie, расположенному по адресу App\Models\Zombie. Это понятие известно, как пространство имен, которое мы рассмотрим в одной из следующих глав.

      Тем не менее, препятствие все еще существует.

      Не имея в базе данных ни одного зомби, мы не можем получить доступ к упомянутому выше маршруту. Поэтому давайте создадим нового зомби по приведенному ниже маршруту:

      <?php

      Route::get('/admin/zombies/create', function(){

      echo '<form method="POST" action="/admin/zombies/create">

      <input type="text" name="name" placeholder="Name"><br>

      <input type="text" name="strength" placeholder="Strength"><br>

      <input type="text" name="health" placeholder="Health"><br>

      <input type="hidden" name="_token" value="' . csrf_token() . '">

      <input type="submit" value="Create New Zombie">

      </form>';

      });

      При посещении этого маршрута в браузере (site.com/admin/zombies/create) отображается простая форма.

      При отправке формы данные публикуются в файл

      site.com/admin/zombies/create POST-маршрут, который должен выглядеть следующим образом:

      <?php

      Route::post('/admin/zombies/create', function () {

      // создаем нового зомби

      });

      Добавив следующую реализацию:

      <?php

      use App\Models\Zombie;

      use Illuminate\Http\Request;

      Route::post('/admin/zombies/create', function(Request $request){

      // instantiate a new zombie

      $zombie = new Zombie();

      $zombie->name = $request->name;

      $zombie->strength = $request->strength;

      $zombie->health = $request->health;

      $zombie->save();

      echo 'Zombie Created';

      });

      И затем отправить форму со следующими данными:

      Имя: Johnny Bullet Holes

      Strength: Сильный

      Здоровье: 70

      Вы получите сообщение 'Zombie Created'. При просмотре нашей базы данных обнаруживается новая запись.

      Впечатляет, не правда ли? Однако вместо того, чтобы вручную указывать имя, силу и здоровье, Laravel позволяет использовать более лаконичный подход:

      <?php

      use App\Zombie;

      use Illuminate\Http\Request;

      Route::post('/admin/zombies/create', function(Request $request){

      // instantiate a new zombie using posted data

      $zombie = Zombie::create($request->all());

      echo 'Zombie Created';

      });

      При попытке использовать этот маршрут может возникнуть ошибка 'MassAssignmentException'. Это означает, что мы пытаемся выполнить массовое назначение классу "Зомби", не указав допустимые поля. В Laravel такая защита предусмотрена по умолчанию.

      Чтобы разрешить массовое присвоение для атрибутов имени, силы и здоровья в нашем классе Zombie, просто добавьте:

      protected $fillable = ['name', 'strength', 'health'];

Скачать книгу