【问题标题】:Laravel how to pass data from controller to bladeLaravel如何将数据从控制器传递到刀片
【发布时间】:2021-05-19 14:04:05
【问题描述】:

我正在构建一个 Laravel 网站。我希望提交的表单数据运行查询并将结果插入表格格式。我正在使用 oracle DB,并且已将其连接到 Laravel。另外,我已经创建了表单,并且查询给出了正确的结果。我不能做的是成功地将结果传递到表中。

我的文件如下:

  1. Routes.php(或较新的 laravel 版本的 web.php):

  2. search.blade.php(带有 post 方法的表单)

    --> 用户数据输入 输入数据 --> 输入数据
        <form method="post" action="/dedomena" id="forma">
            {{ csrf_field() }}
            <fieldset>
                <legend>Insert</legend>
                Registration Number:<br>
                <input type="number" name="AM" min="1000000" max="9999999"><br>
                <input type="submit" value="Search">
            </fieldset>
        </form>
    </body>
    
  3. 我的控制器 (NewController.php) 运行查询。结果显示正确,但以列表格式显示。我想把它们做成表格格式。

    得到('上午'); echo('注册号为:'); 回声($myVar); $entries = DB::table('SCC_ANSWER')->where('AM', $myVar)->get(); dd($条目); } }

我想通过另一个名为 pinakas.blade.php 的刀片,它应该如下所示。我该怎么做?

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Results</title>
    </head>
    <body>
        <table border="1">
            <tr>
                <th>AM</th>
                <th>ST</th>
                <th>CS</th>
                <th>REGYEAR</th>
                <th>REGTERMIN</th>
                <th>CSYEAR</th>
                <th>REGTYPE</th>
                <th>REGDESCR</th>
                <th>STATUS</th>
                <th>STGROUP</th>
                <th>SEM1</th>
                <th>SEM2</th>
                <th>SEM3</th>
                <th>SEM4</th>
                <th>SEM5</th>
                <th>SEM6</th>
                <th>SEM7</th>
                <th>SEM8</th>
                <th>SEM9</th>
                <th>SEM10</th>
                <th>SEM11</th>
                <th>SEM12</th>
                <th>SEM1B</th>
                <th>SEM2B</th>
                <th>SEM3B</th>
                <th>SEM4B</th>
                <th>SEM5B</th>
                <th>SEM6B</th>
                <th>SEM7B</th>
                <th>SEM8B</th>
                <th>SEM9B</th>
                <th>SEM10B</th>
                <th>SEM11B</th>
                <th>SEM12B</th>
                <th>SEM1P</th>
                <th>SEM2P</th>
                <th>SEM3P</th>
                <th>SEM4P</th>
                <th>SEM5P</th>
                <th>SEM6P</th>
                <th>SEM7P</th>
                <th>SEM8P</th>
                <th>SEM9P</th>
                <th>SEM10P</th>
                <th>SEM11P</th>
                <th>SEM12P</th>
                <th>TOTAL</th>
                <th>TOTALB</th>
                <th>TOTALP</th>
            </tr>
            <tr>
               // <td><?php $entries?></td>
            </tr>
        </table>
    </body>
</html>

【问题讨论】:

  • 数据库没问题。它工作正常,查询给出了结果。我不知道如何将数据从控制器传递到刀片。 $entries 必须去 pinakas.blade 并插入到表中。

标签: laravel


【解决方案1】:

试试这个

public function psaxe(Request $request) {
    $myVar=$request->get('AM');
    $entries=DB::table('SCC_ANSWER')->where('AM',$myVar)->get();
    return view('view_file_location')->with('entries' => $entries);
}

//$entries 可以在刀片页面中使用

【讨论】:

  • 不幸的是变量没有传递给刀片。
  • @Konstantinos 你能试试这个。 return view('view_file_location', $entries);
  • 这又给了我未定义的变量:entry1(查看:C:\xampp\htdocs\laravel\resources\views\pinakas.blade.php)
  • 我们传递的是$entries而不是$entries1,如果没有用,请删除或更改为$entries
  • 下面我有完整的解决方案!我修好了。
【解决方案2】:
return view('path.to.your.view', compact('entries'));

在您看来,您只需这样做:

@foreach($entries as $entry)
<tr>
...

等等。

【讨论】:

  • 但是什么没用呢?你能分享一个错误信息吗?这不起作用的唯一原因是数据没有格式化为集合或数组。
  • 我应该更新 pinakas.blade,因为它无法被填充并且在作业中也使用小写字母。我不知道它是区分大小写的...... .下面你可以看到整体的解决方案。我对其进行了测试并且它有效,我将它放在以防将来有人遇到同样的问题。非常感谢您的帮助!
【解决方案3】:

您需要使用@foreach 遍历您的结果:

<tr>
    @foreach($entries as $entry)
        <td>{{ $entry->am }}</td>
        <td>{{ $entry->st }}</td>
        <td>{{ $entry->cs }}</td>
        <td>....</td>
    @endforeach
</tr>

【讨论】:

  • 如果这样做,我会收到此错误:未定义的属性:stdClass::$AM(查看:C:\xampp\htdocs\laravel\resources\views\pinakas.blade.php)
【解决方案4】:

return view('greetings', ['name' =&gt; 'Victoria']);

以这种方式传递信息时,数据应该是带有键/值对的数组。在您的视图中,您可以使用其对应的键访问每个值,例如&lt;?php echo $key; ?&gt;。作为将完整的数据数组传递给视图辅助函数的替代方法,您可以使用 with 方法将单独的数据片段添加到视图中

【讨论】:

    【解决方案5】:

    要将数据传递到刀片视图,这是更好的方法。

    $entries = DB::table('SCC_ANSWER')->where('AM', $myVar)->get();
    
    
    return view('foldername.viewName',compact('entries'));
    

    在刀片视图中

     @if(!empty($entries))
    
    
                            @foreach($entries as $entry)
    
                                     <tr class="warning" >
                                        <td >{{ $entry->AM}}</td>
                                        <td >{{ $entry->ST}}</td>
                                        <td >{{ $entry->CS}}</td>
                                        <td >{{ $entry->REGYEAR}}</td>
                                        <td >{{ $entry->role_name }}</td>
                                        <td >{{ $entry->created_at }}</td>
                                        <td ></td>
                                         .............
                                    </tr>
    
                                    @endforeach
    
                           @endif
    

    【讨论】:

    • 我按照您的建议({{ $entry->AM}} 等)对所有表格字段进行了操作,但它不起作用。我收到一个错误 Undefined property: stdClass::$AM (View: C:\xampp\htdocs\laravel\resources\views\pinakas.blade.php)
    【解决方案6】:

    感谢大家的提示。问题是我在刀片中使用的大写字母!如果其他人在未来的项目中遇到相关问题,我将在摘录下方添加:

    1) Routes.php(或较新的 laravel 版本的 web.php):

    <?php
    
    /*
    |--------------------------------------------------------------------------
    | Application Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register all of the routes for an application.
    | It's a breeze. Simply tell Laravel the URIs it should respond to
    | and give it the controller to call when that URI is requested.
    |
    */
    
    
    Route::get('/search', 'PagesController@search'); //find student data!
    Route::post('/dedomena', 'NewController@psaxe');
    

    2) Search.blade.php

    <!DOCTYPE html>
    <html lang="en">
    <head>
    
    
        <meta charset="UTF-8">
        <!--<link rel="stylesheet" type="text/css" href="form_style.css">  -->
        <title>Εισαγωγή Δεδομένων Χρήστη</title>
    </head>
    <body>
    
    <!--
    <k1 class = "myhome">Εισαγωγή Δεδομένων</k1>
    -->
    Εισαγωγή Δεδομένων
    
    <form method="post" action="/dedomena" id="forma">
    
      {{csrf_field()}}
    
        <fieldset>
            <legend>Εισαγωγή</legend>
    
            Αριθμός Μητρώου:<br>
            <input type="number" name="AM" min="1000000" max="9999999"><br>
            <input type="submit" value="Αναζήτηση">
        </fieldset>
    </form>
    
    </body>
    </html>
    

    3) 控制器(NewController.php)

    <?php namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    
    use DB;
    
    
    class NewController extends Controller
    
    
    {
    
    
    
        public function psaxe(Request $request)
        {
    
            $myVar = $request->get('AM');
            echo('Αποτελέσματα για τον φοιτητή με ΑΜ: ');
            echo($myVar);
            $entries = DB::table('SCC_ANSWER')->where('AM', $myVar)->get();
           // dd($entries);
    
            return view('pinakas', ['entries1' => $entries]);
    
    
        }}
    

    4) 刀片 (pinakas.blade.php)

    <!DOCTYPE html>
    <html lang="el">
    <head>
        <meta charset="UTF-8">
        <title>Αποτελέσματα</title>
    </head>
    <body>
    
    <table border="1">
        <tr>
            <th>AM</th>
            <th>ST</th>
            <th>CS</th>
            <th>REGYEAR</th>
            <th>REGTERMIN</th>
            <th>CSYEAR</th>
            <th>REGTYPE</th>
            <th>REGDESCR</th>
            <th>STATUS</th>
            <th>STGROUP</th>
            <th>SEM1</th>
            <th>SEM2</th>
            <th>SEM3</th>
            <th>SEM4</th>
            <th>SEM5</th>
            <th>SEM6</th>
            <th>SEM7</th>
            <th>SEM8</th>
            <th>SEM9</th>
            <th>SEM10</th>
            <th>SEM11</th>
            <th>SEM12</th>
            <th>SEM1B</th>
            <th>SEM2B</th>
            <th>SEM3B</th>
            <th>SEM4B</th>
            <th>SEM5B</th>
            <th>SEM6B</th>
            <th>SEM7B</th>
            <th>SEM8B</th>
            <th>SEM9B</th>
            <th>SEM10B</th>
            <th>SEM11B</th>
            <th>SEM12B</th>
            <th>SEM1P</th>
            <th>SEM2P</th>
            <th>SEM3P</th>
            <th>SEM4P</th>
            <th>SEM5P</th>
            <th>SEM6P</th>
            <th>SEM7P</th>
            <th>SEM8P</th>
            <th>SEM9P</th>
            <th>SEM10P</th>
            <th>SEM11P</th>
            <th>SEM12P</th>
            <th>TOTAL</th>
            <th>TOTALB</th>
            <th>TOTALP</th>
        </tr>
        @foreach($entries1 as $entry)
            <tr>
                <td>{{ $entry->am }}</td>
                <td>{{ $entry->st }}</td>
                <td>{{ $entry->cs }}</td>
                <td>{{ $entry->regyear }}</td>
                <td>{{ $entry->regtermin }}</td>
                <td>{{ $entry->csyear }}</td>
                <td>{{ $entry->regtype }}</td>
                <td>{{ $entry->regdescr }}</td>
                <td>{{ $entry->status }}</td>
                <td>{{ $entry->stgroup }}</td>
                <td>{{ $entry->sem1 }}</td>
                <td>{{ $entry->sem2 }}</td>
                <td>{{ $entry->sem3 }}</td>
                <td>{{ $entry->sem4 }}</td>
                <td>{{ $entry->sem5 }}</td>
                <td>{{ $entry->sem6 }}</td>
                <td>{{ $entry->sem7 }}</td>
                <td>{{ $entry->sem8 }}</td>
                <td>{{ $entry->sem9 }}</td>
                <td>{{ $entry->sem10 }}</td>
                <td>{{ $entry->sem11 }}</td>
                <td>{{ $entry->sem12 }}</td>
                <td>{{ $entry->sem1b }}</td>
                <td>{{ $entry->sem2b }}</td>
                <td>{{ $entry->sem3b }}</td>
                <td>{{ $entry->sem4b }}</td>
                <td>{{ $entry->sem5b }}</td>
                <td>{{ $entry->sem6b }}</td>
                <td>{{ $entry->sem7b }}</td>
                <td>{{ $entry->sem8b }}</td>
                <td>{{ $entry->sem9b }}</td>
                <td>{{ $entry->sem10b }}</td>
                <td>{{ $entry->sem11b }}</td>
                <td>{{ $entry->sem12b }}</td>
                <td>{{ $entry->sem1p }}</td>
                <td>{{ $entry->sem2p }}</td>
                <td>{{ $entry->sem3p }}</td>
                <td>{{ $entry->sem4p }}</td>
                <td>{{ $entry->sem5p }}</td>
                <td>{{ $entry->sem6p }}</td>
                <td>{{ $entry->sem7p }}</td>
                <td>{{ $entry->sem8p }}</td>
                <td>{{ $entry->sem9p }}</td>
                <td>{{ $entry->sem10p }}</td>
                <td>{{ $entry->sem11p }}</td>
                <td>{{ $entry->sem12p }}</td>
                <td>{{ $entry->total }}</td>
                <td>{{ $entry->totalb }}</td>
                <td>{{ $entry->totalp }}</td>
            </tr>
        @endforeach
    
    </table>
    
    </body>
    </html>
    

    5) 和 PagesController.php

    <?php namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;  //sos:: needed only for function emfanisi!!!!
    use DB;                       //sos:: needed only for function emfanisi!!!!
    
    
    class PagesController extends Controller
    {
    
    
    
    
        public function search()
        {
            return view('search');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 2017-09-03
      • 2016-06-25
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 2019-12-19
      相关资源
      最近更新 更多