У меня проблема с сохранением моей инфы в базе Laravel CRUD, я пишу новую инфу на странице создания, а он переходит на индексную страницу, а инфу не видит. после того, как я нажму отправить
Я не вижу свою новую информацию
мой create.blade.php (первая страница изображения):
<p>It works</p>
<form metod = "post" action = "/projects">
{{ csrf_field() }}
<div>
<input type = "text" name = "title" value = "" placeholder = "title">
</div>
<div>
<textarea type = "text" name = "description" value = "" placeholder = "description"></textarea>
</div>
<div>
<button type = "sumbit">Sumbit</button>
</div>
</form>
мой index.blade.php (вторая страница изображения):
<p>It works</p>
@foreach ($projects as $project)
<li>{{ $project->title}}</li>>
@endforeach
мой web.php
<?php
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/welcome', 'App\Http\Controllers\MainController@welcome');
Route::get('/users', 'App\Http\Controllers\MainController@users');
Route::get('/business', 'App\Http\Controllers\MainController@business');
Route::get('/projects', 'App\Http\Controllers\ProjectsController@index');
Route::post('/projects', 'App\Http\Controllers\ProjectsController@store');
Route::get('/projects/create', 'App\Http\Controllers\ProjectsController@create');
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
мой ProjectsController.php:
<?php
namespace App\Http\Controllers;
use \App\Models\Project;
use Illuminate\Http\Request;
class ProjectsController extends Controller
{
public function index()
{
$projects = \App\Models\Project::all();
return view('projects.index', compact('projects'));
}
public function create()
{
return view('projects.create');
}
public function store()
{
$project = new Project();
$project->title = reqeust('title');
$project->description = request('description');
$project->save();
return redirect('/projects');
}
}
мой проект.php:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
use HasFactory;
}
заполняемый не требуется, так как это не массовое задание @Kamlesh Paul
У вас тут опечатка: metod = "post"
, должно быть method = "post"
Вы неправильно написали request в своей функции ProjectsController
store()
, она должна выглядеть так:
$project->title = request('title');
Это может быть не совсем решением, вам может понадобиться это вместо этого
public function store()
{
$project = new Project();
$project->title = request()->input('title');
$project->description = request()->input('description');
$project->save();
return redirect('/projects');
}
https://laravel.com/docs/8.x/requests#accessing-the-request
хорошо, но ничего не изменилось (я пишу имя и описание и нажимаю «Отправить», выбрасывает меня на индекс страницы, а на индекс страницы нет новой информации (
@Mineral это из-за опечатки в вашей форме, как указано в комментариях.
@lagbox правильно, <form metod = "post" action = "/projects">
должно быть <form method = "post" action = "/projects">
@Mineral рассмотрите возможность использования IDE, такой как Atom или PHPstorm, чтобы помочь обнаружить эти опечатки.
Project
заполняемый laravel.com/docs/8.x/eloquent#mass-assignment