Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Стъпка 0. Подготовка
- Използваме подход “Learning by Doing”.
- Архивираме проекта с цел да възстановим данните, ако се наложи.
- Стартираме Apache & MySQL & cmd
- Ако XAMPP е инсталиран на D:, то първо сменяме устройството, а после директорията:
- D:
- cd \xampp\htdocs\laravel8
- PATH=%PATH%;C:\xampp\php
- PATH=%PATH%;D:\xampp\php
- Подобряване на приложението
- Използваме проекта от предходното упражнение.
- Подобрение 1. Потвърждение при изтриване на запис
- Къде трябва да се направи промяна? В M?, в V? или в C?
- <form action="{{ route('games.destroy', $game->id)}}" method="post" onsubmit="return confirm('The record will be deleted');">
- Подобрение 2. Ще добавим ново поле във формата за качване на картинка - качване на файл.
- Стъпка 1. Промяна на миграционните файлове
- Отваряме
- C:\xampp\htdocs\laravel8\database\migrations\2021_11_NN_NNNNN_create_games_table.php
- Добавяне на ново поле към структурата на таблицата games от БД:
- public function up()
- {
- Schema::create('games', function (Blueprint $table) {
- $table->id();
- ...
- $table->string('file_name')->nullable();
- $table->timestamps();
- });
- }
- php artisan migrate:refresh --path=/database/migrations/2021_11_NN_NNNNN_create_games_table.php
- Така ще се изтрие и създаде само 1 таблица - games, без да се изтрива/създава users.
- Стъпка 2. Промяна на уеб формата за нов запис - добавяне на възможност за избор на файл
- Отваряме:
- C:\xampp\htdocs\laravel8\resources\views\create.blade.php
- Променяме:
- <form method="post" action="{{ route('games.store') }}">
- Добавяме:
- <form method="post" action="{{ route('games.store') }}" enctype="multipart/form-data">
- Добавяме:
- <div class="form-group">
- <label for="picture">Picture :</label>
- <input type="file" class="form-control" name="picture"/>
- </div>
- <button type="submit" class="btn btn-primary">Add Game</button>
- </form>
- Стъпка 3. Създаване на директория, където ще се записват файловете. Промяна на модела и контролера.
- Създаваме директория за качените файлове:
- mkdir \xampp\htdocs\laravel8\public\pics
- Отваряме
- \xampp\htdocs\laravel8\app\Models\Game.php
- Добавяме:
- // Game.php
- namespace App\Models;
- use Illuminate\Database\Eloquent\Factories\HasFactory;
- use Illuminate\Database\Eloquent\Model;
- class Game extends Model
- {
- use HasFactory;
- protected $fillable = ['name', 'price', 'file_name'];
- }
- Отваряме файл:
- \xampp\htdocs\laravel8\app\Http\Controllers\GameController.php
- Добавяме:
- public function store(Request $request)
- {
- if($request->hasFile('picture')) {
- $fileName = time() . '.' . $request->picture->getClientOriginalExtension();
- $request->picture->move(public_path('pics'), $fileName);
- $request->merge([ 'file_name' => $fileName ]);
- }
- $validatedData = $request->validate([
- ...
- 'file_name' => 'nullable',
- ]);
- }
- Стъпка 4. Промяна на изгледа
- Отваряме:
- \xampp\htdocs\laravel8\resources\views\index.blade.php
- Добавяме:
- @foreach($games as $game)
- ...
- <td>{{$game->id}} <img src="./pics/{{$game->file_name}}" width="50"></td>
- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement