在 LARAVEL 更新表单中使用变量

Posted

技术标签:

【中文标题】在 LARAVEL 更新表单中使用变量【英文标题】:Use variable in LARAVEL update form 【发布时间】:2018-08-10 12:11:49 【问题描述】:

我需要在 @if 条件中使用 old() 变量值。当我打开 UPDATE 表单时,我看到了正确的值。但我不知道为什么,当我在条件下使用 old() 时,值是 NULL。此表格在全日历中使用。其实我用的是ajax。

表格更新:

 <!-- FORM per aggiornare eventi -->
!!Form::open(['route'=>['events.update',1],  'method'=>'PUT', 'id'=>'updatemodal'])!!
<div class="form-group">
 !! Form::label('tipologia_evento_id', 'Tipo evento') !!
 <select id="tipologia_evento_id" name="tipologia_evento_id" class="form-control" disabled>
     @foreach(DB::table('tipologie_eventi')->get() as $tipologia)
         <option
            @if(old('_tipologia_evento_id') == $tipologia->id)
               selected="selected"
            @endif
                value="$tipologia->id">$tipologia->nome</option>
     @endforeach
 </select>
</div>
@if(!in_array(old('_tipologia_evento_id'),array(1,2)))
 <div class="modal-footer">
     <meta name="csrf-token" content=" csrf_token() ">
     <a id="delete" data-href=" url('events') " data-id="" class="btn btn-danger">Elimina</a>
     <button id="aggiornaBtn" type="submit" class="btn btn-success" disabled="disabled">Aggiorna</button>
</div>
@endif
!! Form::close() !!

AJAX 代码:

        $('#calendar').fullCalendar(
        header: 
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,listDay'
        ,
        navLinks: true, // can click day/week names to navigate views
        editable: false,
        selectable: true,
        selectHelper: true,

        select: function(start, end)
            start = moment(start.format());
            end = moment(end.format());
            $('#date_start').val(start.format('DD.MM.YYYY'));
            $('#date_end').val(end.format('DD.MM.YYYY HH:mm'));
            $('#responsive-modal').modal('show');
        ,

        events: BASEURL + '/events',

        eventClick: function(event, jsEvent, view)
            var date_start = $.fullCalendar.moment(event.start).format('DD.MM.YYYY');
            var time_start = $.fullCalendar.moment(event.start).format('HH:mm');
            var date_end = $.fullCalendar.moment(event.end).format('DD.MM.YYYY HH:mm');

            $('#modal-event #delete').attr('data-id', event.id);

            $('#updatemodal').attr("action", '/events/'+event.id);

            $('#modal-event #title').val(event.title);
            $('#modal-event #description').val(event.description);
            $('#modal-event #date_start').val(date_start);
            $('#modal-event #time_start').val(time_start);
            $('#modal-event #date_end').val(date_end);
            $('#modal-event #responsabile').val(event.responsabile);
            $('#modal-event #tipologia_evento_id').val(event.tipologia_evento_id);
            $('#modal-event').modal('show');
        
    );

我尝试使用@if(!in_array(old('_tipologia_evento_id'),array(1,2))),但效果不佳。 有什么建议吗?

【问题讨论】:

【参考方案1】:

您的领域有错字。您在此处引用的第一个字段 tipologia_evento_id

<select id="tipologia_evento_id" name="tipologia_evento_id" class="form-control" disabled>
<!-- Take note it has no _ (underscore) starting -->

但是你想用_ 来访问这个值,从这里开始:

@if(old('_tipologia_evento_id') == $tipologia->id)

这里:

@if(!in_array(old('_tipologia_evento_id'),array(1,2)))

【讨论】:

如何在表单中使用 old('tipologia_evento_id')?我可以简单地使用 old('tipologia_evento_id') 访问吗?不要为我工作。例如在这部分,不要工作。 @if(!in_array(old('_tipologia_evento_id'),array(1,2))) 我的意思是你应该删除_并只使用'tipologia_evento_id' 我不能使用旧的('tipologia_evento_id')。我在 js 中打印了一个警报,并且tipologia_evento_id 是正确的。输入表单中的相同内容。正确打印了值tipologia_evento_id。其他解决方案?

以上是关于在 LARAVEL 更新表单中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

尝试通过 AJAX 验证 Laravel 表单时出现错误 422

Laravel/Ajax POST 500 内部服务器错误可能的原因

在 laravel 刀片的表单字段中使用变量

我想自学laraver,请诸位前辈给一些建议,谢谢

当尚未在编辑表单中选择图像时,如何默认使用当前图像更新帖子。我正在使用 laravel 8

Larave中CSRF攻击