代码之家  ›  专栏  ›  技术社区  ›  Furin

从视图中的窗体中Laravel填充DB表并将其显示回同一视图

  •  0
  • Furin  · 技术社区  · 7 年前

    '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>
    

    谢谢你的帮助。

    1 回复  |  直到 7 年前
        1
  •  0
  •   rbaskam    7 年前

    @foreach($project_data as $data)

    但是当你打电话的时候

    public function showpform()

    $project data

    public function showtable(Request $request)

    ….

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

    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