как передать объект из вида в контроллер - PullRequest
0 голосов
/ 18 мая 2018

У меня есть объект $trial, который заполняется во время просмотра.Я хотел бы передать его в маршрут как POST для вызова функции, используя ее данные.Это для создания события для полного календаря.Я почти уверен, что сидел на этом так долго, что слишком задумался.

Хотел сделать это с помощью обратного вызова eventRender, но не мог понять, как передать в него данные, попытался просто $.post просто получить метод, не разрешенный или неизвестный статус в консоли.

У меня есть несколько фиктивных данных на данный момент.

Цель здесь - создать событие за отмеченный промежуток времени.

Функция контроллера для добавления новой записи в базу данных, если мне удастся передать данные

public function addEvent(Request $request)
{
    //dd($request);

    $event = new Event;
    $event->title = $request['title'];
    $event->start_date = $request['start_date'];
    $event->end_date = $request['end_date'];
    $event->save();

    \Session::flash('success','Event added successfully.');
    return redirect('/events');
}

web.php (маршрутизация)

Route::get('/events', 'EventController@index');
Route::post('/events', 'EventController@addEvent');

и затем есть индексфункция, над которой я сейчас работаю, чтобы изменить таблицу (сделать ее редактируемой и т. д.).

public $trial = [];

//
public function index()
{
    $events = [];
    $data = Event::all();
    if($data->count()) {
        foreach ($data as $key => $value) {
            $events[] = Calendar::event(
                $value->title,
                true,
                new \DateTime($value->start_date),
                new \DateTime($value->end_date.' +1 day'),
                null,
                // Add color and link on event
                [
                    'color' => '#f05050',
                    'url' => '/events',


                ]
            );
        }
    }

    $calendar = Calendar::addEvents($events) //add an array with addEvents
    //->addEvent($eloquentEvent, [ //set custom color fo this event
        //'color' => '#800',
    //])
        ->setOptions([ //set fullcalendar options
        'firstDay' => 1,
        'selectable' => true,
        'unselectAuto' => false,
        'selectOverlap' => false,
        'editable' => true,
        'businessHours' => [
            'dow' => [ 1, 2, 3, 4, 5 ],
            'start'=> '08:00',
            'end' => '19:00',
        ]

    ])->setCallbacks([ //set fullcalendar callback options (will not be JSON encoded)
        'eventClick' => 'function(event) {
            console.log("You clicked on an event with a title of: " + event.title);
     }',

        'select' => 'function(start, end) {
            console.log("Selection start: " + start.format() + " selection end: " + end.format());

            $trial = {
                title: "rent",
                start_date: start.format(),
                end_date: end.format()
            };
            console.log($trial);


        }',
    ]);

приветствуются любые предложения.

РЕДАКТИРОВАТЬ: как правило, практически единственный способ передать данные для использования в функциях контроллера - это передать их через форму

1 Ответ

0 голосов
/ 19 мая 2018

Я не использую Angular специально, но у него много общего с Vue.Я использую независимый от платформы пакет под названием Axios, который позволяет отправлять запросы на ваш сервер.

Чтобы отозвать секунду, форма - это в основном общий способ отправки почтового запроса.URL указывается в форме, а значения являются полями ввода.

С любым пакетом вы бы сделали что-то похожее:

  • укажите URL
  • укажите тип запроса (post, get и т. Д.)
  • передать параметры (но не обязательно)

С Axios это будет выглядеть примерно так:

axios.post('/mySite.com/something', { datum1: 'value', datum2: true })
      .then(response => () {
         this.someFunction(response.data);
      });

В нем есть какое-то волшебство ES6 (функции стрелок), но этоочень похоже на многие запросы.Как я уже сказал, второй параметр является необязательным, или вы можете даже передать объект данных.

  • Не забудьте также включить токен csrf.Это проще всего, если вы просто добавляете метатег в заголовок страницы (см. Документы Laravel), но вы также можете передать его непосредственно как параметр _csrf.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...