Методы контроллера в Laravel

Я разрабатывал приложение codeigniter в течение последних 2 лет, и с тех пор, как я начал стилизацию шаблонов mvc из самого codeigniter, теперь я не являюсь активным пользователем командной строки, поэтому сначала у меня была некоторая кривая обучения с codeigniter, но я пересек ее и начал разрабатывать приложения с воспламенителем кода, потому что нам не нужно много настраивать, и все было внутри одного zip-файла, но теперь, к сожалению, codeigniter мертв, и я всего лишь один человек в моей команде, я должен полагаться на другие сторонние инструменты, которым доверяют другие, поэтому я решил переключиться на laravel, теперь при запуске было очень сложно перейти с codeigniter, потому что композитор и все остальное, но как-то я тоже это пересек, но теперь я путаюсь с маршрутизацией и другими вещами, и я перепробовал много учебных пособий, но я все еще не могу понять, как я могу перейти из приложения, где я управляю студентами, где они могут менять электронную почту, менять номер телефона, обновлять материал, в codeigniter это было легко, но я не знаю, как к нему подойти этот материал в маршрутизации Ла Равель, теперь этот вопрос звучит глупо для сообщества, которое уже работает над Laravel, но если вы увидите, с моей точки зрения, это повлияет на мой хлеб с маслом. Вот как я использую, чтобы подойти в codeigniter

class Student extends CI_Controller{
// usual piece of code of constructor
function update_email()
{
// piece of code to update email
}
}

но теперь с системой маршрутизации Laravel и все, я не знаю, как подойти к этому контроллер ресурсов выглядит так

<?php

class StudentController extends \BaseController {

/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{

}/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
//
}/**
* Display the specified resource.
*
* @param  int  $id
* @return Response
*/
public function show($id)
{
//
}/**
* Show the form for editing the specified resource.
*
* @param  int  $id
* @return Response
*/
public function edit($id)
{
//
}/**
* Update the specified resource in storage.
*
* @param  int  $id
* @return Response
*/
public function update($id)
{
//
}/**
* Remove the specified resource from storage.
*
* @param  int  $id
* @return Response
*/
public function destroy($id)
{
//
}}

Теперь с каждой частью все в порядке, но как мне подойти к вещам, где мне нужно обновить только адрес электронной почты или только номер телефона и прочее?

0

Решение

На самом деле, в вашем вопросе у вас есть RESTful контроллер, который может сбить вас с толку в это время, потому что вы новичок в Laravel и использовал CIтак что, вероятно, вы очень сильно привыкли к автоматизации URL картографирование без маршрута. В этом случае для простоты я предлагаю вам использовать простой контроллер, и это почти то же самое, что вы сделали в CI но здесь, в Laravel ты должен объявить route за каждое действие. Итак, просто создайте два маршрута, как эти:

Rouite::get('something/edit/{id}', array('uses' => 'StudentController@edit', 'as' => 'edit.record'));

Rouite::post('something/update/{id}', array('uses' => 'StudentController@update', 'as' => 'update.record'));

Затем создайте класс / Controller и объявите эти методы:

class StudentController extends baseController {

// URL: http://example.com/something/edit/10 and it'll listen to GET request
public function edit($id) {
// $record = Load the record from database using the $id/10
// retuen View::make('editform')->with('record', $record);
}

// URL: http://example.com/something/update/10  and it'll listen to POST request
public function update($id) {
// Update the record using the $id/10
}
}

В вашей форме вы должны использовать http://example.com/something/update/10 как action и вы можете использовать route('update.record') или же url('something/update/10') генерировать action в виде. Читать дальше на Документация Laravel.

0

Другие решения

То, что вы создали (или, скорее, сгенерировали), здесь называется Отдыхающий контроллер. Это какой-то «стандартный» способ управления действиями CRUD (создание / чтение / обновление / удаление). Однако нет необходимости делать это таким образом. Вы можете добавить в свой контроллер любые методы, которые вам нужны, и вообще не использовать Restful Controllers. Это ваш выбор.

Вы можете создать в своей функции новый метод

function updateEmail()
{
// do here whatever you want
}

и в вашем routes.php файл добавить новый маршрут:

Route::match(array('GET', 'POST'), '/changegemail', 'StudentController@updateEmail');

Теперь вы можете написать свой код для этого метода, и он будет работать.

0

По вопросам рекламы [email protected]