Laravel 5.4将变量从控制器传递给js脚本

时间:2017-04-06 16:06:18

标签: javascript php laravel laravel-5

嗨,可以从控制器传递变量到JS脚本。我必须在用户加入活动时更改颜色事件。

我需要将变量$ colorrr传递给我的js因为我使用fullcalendar有选项eventColor:我想从控制器发送变量$ colorrr。 现在我只检查数据透视表中是否存在事件。它的工作,我的问题是我不知道如何将变量传递给选项eventColor

控制器:

public function index()
    { 
       $eventscolo=DB::table('save_events')->select('events_id')->get();
       $eventsss=DB::table('events')->select('id','title')->get(); 
             
        foreach ($eventsss as $eventss) 
        {
             
            if(DB::table('save_events')->where('events_id','=',$eventss->id)->exists())
            {
                    
                  $colorrr = 'grey';
                    
            }
            else
                { 
                    if ($eventss->title=="Wydzial 1") 
                        {
                            
                           $colorrr = 'red';
                            
                        }
                            elseif($eventss->title == "Wydzial 2")
                            {
                               
                             $colorrr = 'blue';
                               
                            }
                            elseif ($eventss->title == "Wydzial 3") 
                            {
                               
                             $colorrr = 'green';
                               
                            }
                            elseif ($eventss->title == "Wydzial 4") 
                            {
                                
                               $colorrr = 'yellow';
                                
                            }
                } 

        }
      return view('home',['eventscolo'=>$eventscolo,'eventsss'=>$eventsss,'colorrr'=>$colorrr]);

JS脚本:

<script src="{{ asset('js/fullcalendar') }}/fullcalendar.js"></script>
<script src="{{ asset('js/bootstrap.js') }}"></script>
<script type="text/javascript">

  $(document).ready(function() {
    
    var base_url = '{{ url('/') }}';
    
      
    
    $('#bootstrapModalFullCalendar').fullCalendar({
      weekends: true,
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek'
      },
       eventClick: function(event, jsEvent, view) {
          $('#modalTitle').html(event.title);
          $('#modalBody').html(event.name);
          $('#eventUrl').attr('href','/home/zapis/'+event.id);
          $("#startTime").html(moment(event.start).format('HH:mm '));
          if (event.end) $("#endTime").html(moment(event.end).format('HH:mm '));
          else $("#endTime").html('');              
          $('#fullCalModal').modal();
          return false;
        },
      
      eventLimit: true, // allow "more" link when too many events
      FirstDay: 1,
              contentheight : 650,
              editable : true,
              allDay : false,
              aspectRatio : 2,
              slotLabelFormat : 'HH:mm:ss',
              timeFormat : 'HH:mm',
              displayEventEnd : true,
              events: {
        url: base_url + '/api',
        error: function() {
          alert("cannot load json");
        }
      },
       eventColor: 'colorrr',
    
      
    });
  });
</script>

1 个答案:

答案 0 :(得分:1)

控制器(传递值如下图所示)

//..........................
//............................
$data['myVal'] = "abc";
return view('myViewPage',['data'=>$data]);

刀片-myViewPage(JS)

<script>
    //Global variable on you blade
    var url = "{{url('/manufacturers-json')}}";
    var custom_val = "{{$data['myVal']}}"; //What ever you are getting from controller ($colorr)
</script>

然后你可以将这个JS变量用到你的JS中。我正在使用 angularJS。这样做 如果您的情况不适用,请尝试创建输入字段。

<input type="hidden" value="<?php echo $colorrr; ?>" id="my_color" />

$colorrr(或者您从控制器传递到视图的位置),请确保此变量包含值。
在你的JS。

var color = $("#my_color").val();