形式::打开动作变量

时间:2019-08-07 18:50:26

标签: php laravel

我想将Form::Open包装在foreach语句中,并从变量中调用Controller。使用以下代码似乎不会在foreach语句中返回控制器信息。


    <?php
    $list = ['Sub_Locations','Networks','Equipment','Site_Visits'];
    $get_modules = DB::table('modules')->whereIn('name', $list)->get();
    foreach ($get_modules as $create){
    ?>

       @la_access("$create->name", "create")

    <div class="modal fade" id="Add<?php echo $create->name; ?>" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="myModalLabel">Add <?php echo $create->name; ?></h4>
            </div>


            {!! Form::open(['action' => 'LA\$create->controller@store', 'id' => 'customer-add-form']) !!}

            <div class="modal-body">
                <div class="box-body">
                    <?php $form = Module::get($create->name); ?>
                    @la_form($form)
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                {!! Form::submit( 'Submit', ['class'=>'btn btn-success']) !!}
            </div>
            {!! Form::close() !!}
        </div>
    </div>
</div>

        @endla_access
      <?php
         }
          ?>

2 个答案:

答案 0 :(得分:0)

您遇到了许多问题,无法按照您希望的方式进行操作。

正如@aynber所说,如果您一直使用刀片式标签,它将使其更加清晰/容易。减少混乱。所以,

@foreach 
   // loop of forms
@endforeach

下一个问题是,对Form的调用中有一个不可解析的实体。您的表单结构适合打开和关闭,但是其中的内容会引起问题。 open行的这一部分:

'action' => 'LA\$create->controller@store',

不起作用。您在单引号内有一个变量。由于这是刀片操作的内部内容,因此请使用标准的 PHP 表示法找到正确的路径。或者,如果更容易,您可以呼叫路线。这是一个示例:

{!! Form::open(['route' => 'yourNamedRoute.store', 'id'=>'somethingX']) !!}

下一个需要注意的问题是您在表单上的ID:

'id' => 'customer-add-form'

当您处于foreach循环中时,这将在同一页面上创建具有相同id(customer-add-form)的多个表单。这也会造成问题。

所以...希望这会为您提供一些起点,以帮助您解决问题。这并不是复制和粘贴的详尽答案;您将不得不进行一些错误查找,但这也许会帮助您解决问题。

答案 1 :(得分:0)

declare @cmd nvarchar(max) = '

    with 

        selectedData as (

            select     ....
            from       [tunnelData].[dbo].[' + @tunnel +']                                             
            where      [theDate] >= ''' + @date + '''

        ),

        lagData as (...) 

        select      ...
        from        lagData
        order by    [theDate] ASC, [theTime] ASC

';

exec (@cmd);

这似乎现在显示正确的字符串,但是单引号将补丁弄乱了。有任何想法吗?