创建类似ol(html)的东西,但取决于搜索结果

时间:2017-04-27 07:09:49

标签: php html model-view-controller laravel-5.2

我无法弄清楚什么是最好的冠军,但这就是我想要达到的目标。

我想要做的是让第一列像一个' ol'在html中,它为搜索结果编号。

我的刀片中有这个:

<table class="table table-bordered" style="text-align: left;">
    <tr>                            
        <th>Full Name (Last, First, Middle)</th>                                        
        <th>Encoded by</th>
    </tr>
    <tbody>
        {!! $searchresults !!}
    </tbody>
</table>

这是我的控制器

public function listofStaffTable(){   
    $staffs = DB::table('staff_profiles')->select('last_name','first_name','middle_name','encoded_by')->orderBy('last_name','ASC')->get();              
    $searchresults = ""; // define the searchresults variable       
    foreach( $staffs as $key => $profile ){                     
        $searchresults .= '<tr>'.                          
        '<td><a href="'. URL::route('viewstaffprofile', $profile->id) .'">'. $profile->last_name .' '. $profile->first_name .' '. $profile->middle_name .' </a></td>'.  
        '<td>'. $profile->encoded_by .'</td>'.
        </tr>';
    }   
    $data = [];     
    $data['searchresults'] = $searchresults;            
    return view( 'user/masterlist/list-of-staffs', $data);  
}

因此,在插入新代码后,我应该在控制器中做什么。

顺便使用Laravel 5.2

2 个答案:

答案 0 :(得分:1)

您尝试实现目标的方式有点违背“最佳做法”。最好的方法是将责任更好地封装起来。 (html生成属于控制器中的视图和逻辑)

因此,从控制器中删除所有html并在视图中执行生成(迭代)部分......您可以在那里迭代并生成html

public function listofStaffTable()
{     
    $staffs = DB::table('staff_profiles')
                ->select('last_name','first_name','middle_name','encoded_by')
                ->orderBy('last_name','ASC')
                ->get();          

    $data = [];     
    $data['searchresults'] = $searchresults;

    return view( 'user/masterlist/list-of-staffs', $data);   
}
<table class="table table-bordered" style="text-align: left;">
    <tr>
        <th>Order</th>                            
        <th>Full Name (Last, First, Middle)</th>                                        
        <th>Encoded by</th>
    </tr>
    <tbody>
        @foreach ($searchresults as $key => $profile )
            <tr>
                <!-- The current loop iteration (starts at 1). -->
                <td> {{ $loop->iteration }} </td>
                <td>
                    <a href="{{ route('viewstaffprofile', $profile->id) }} ">
                        {{ $profile->last_name }} {{ $profile->first_name }} {{ $profile->middle_name }}
                    </a>
                </td>
                <td> {{ $profile->encoded_by }} </td>
            </tr>
        @endforeach
    </tbody>
</table>

我没有测试代码,我只是编辑给你一个想法。

答案 1 :(得分:0)

刀片模板:

<table class="table table-bordered" style="text-align: left;">
    <tr>
        <th>Order</th>                            
        <th>Full Name (Last, First, Middle)</th>                                        
        <th>Encoded by</th>
    </tr>
    <tbody>
        {!! $searchresults !!}
    </tbody>
</table>

在你的控制器中:

public function listofStaffTable()
{   

    $staffs = DB::table('staff_profiles')->select('last_name','first_name','middle_name','encoded_by')->orderBy('last_name','ASC')->get();          

    $searchresults = ""; // define the searchresults variable

    $i = 1; // just use a integer that increments when iterating over results

    foreach( $staffs as $key => $profile )
    {           
        $searchresults .= '<tr>'.    
        '<td>'.$i.'.</td>'.                      
        '<td><a href="'. URL::route('viewstaffprofile', $profile->id) .'">'. $profile->last_name .' '. $profile->first_name .' '. $profile->middle_name .' </a></td>'.  
        '<td>'. $profile->encoded_by .'</td>'.
        '</tr>';
        $i++;
    }

    $data = [];     
    $data['searchresults'] = $searchresults;

    return view( 'user/masterlist/list-of-staffs', $data);  
}