Laravel заполняет таблицу БД из формы в представлении и отображает ее обратно в том же представлении

Я новичок в среде Laravel и пытаюсь создать инструмент для управления базой данных. Я уже создал свою таблицу, и мне удается заполнить ее из представления, чего я не получаю, так это отображения таблицы обратно в представление. Я построил две функции: одну, которая просто отображает форму 'Project_create@showpform', а другую, которая должна обновлять то же представление с вставленными данными 'Project_create@showtable'. Получаю сообщение об ошибке: "Undefined variable: project_data (View:/var/www/tcc/src/resources/views/form_project.blade.php)".

Здесь вы можете увидеть мои маршруты:

Route::get('/', 'DataController@overview');

Route::get('/myproject', 'Project_create@showpform');
Route::post('/myproject', 'Project_create@showtable');

Route::get('/upload','DataController@showform');
Route::post('/upload', 'DataController@read_xsl');

Route::get('/scrape', 'DataController@scrape');

Вот мой контроллер Project_create:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;

class project_create extends Controller
{
    public function showpform()
    {
        return view('form_project');
    }

    public function showtable(Request $request)
    {
        $name = $request->input('name');
        $description = $request->input('description');

        \DB::table('projects')->insert(
            [
                'project_id' => 1,
                'name' => $rawUrl,
                'description' => $hashedUrl,
                'created_at' =>  \Carbon\Carbon::now(),
            ]);

        $project_data = \DB::table('projects')->select('*')->get();
        return View::make('form_project', compact('project_data'));
    }
}

И вот мой взгляд:

<html lang = "en">
    <head>
        <title>File Upload</title>
        <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
        <link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <link rel = "stylesheet" href = "https://www.w3schools.com/w3css/4/w3.css">
    </head>
<body>

    <div class = "container">
        <h3 class = "jumbotron">Create here your project</h3>

        <form class = "w3-container w3-light-grey" action = {{action('DataController@showform')}} enctype = "multipart/form-data">
        {{csrf_field()}}
            <p>
            <label>Project Name</label>
            <input class = "w3-input w3-border w3-round" name = "name" type = "text"></p>
            <p>
            <label>Project Description</label>
            <input class = "w3-input w3-border w3-round" name = "description" type = "text"></p>

        <button type = "submit" class = "btn btn-primary" style = "margin-top:10px">Create Project</button>
        </form>

    </div>

    <table>
        <thead>
            <tr>
                <th> id</th>
                <th> name</th>
                <th> description</th>
                <th> created_at </th>
            </tr>
        </thead>
        <tbody>
             @foreach($project_data as $data)
              <tr>
                  <td> {{$data->id}} </td>
                  <td> {{$data->name}} </td>
                  <td> {{$data->description}} </td>
                  <td> {{$data->created_at}} </td>
              </tr>
             @endforeach
       </tbody>
   </table>


</body>
</html>

Спасибо за помощь.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 908
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вашего взгляда есть линия

@foreach($project_data as $data)

но когда ты звонишь

public function showpform()

вы не проходите в

$project data

как в

public function showtable(Request $request)

....

return View::make('form_project', compact('project_data'));

В файле Blade добавьте функцию isset. например

@if (isset($project_data)) @foreach($project_data as $data) <tr> <td> {{$data->id}} </td> <td> {{$data->name}} </td> <td> {{$data->description}} </td> <td> {{$data->created_at}} </td> </tr> @endforeach @endif

Спасибо за статус @if, он решил мою проблему. В public function showpform() я не просто добавил $project data, но return view('form_project', [ 'project_data' => \DB::table('projects')->select('*')->get(), ]); таким образом работал!

Furin 20.06.2018 10:14

Другие вопросы по теме