Inleiding tot Laravel-controllers

Je hele applicatie kan eenvoudig worden gemaakt met behulp van Closures in routes.php-bestand, het zou rommelig worden maar het is mogelijk. Wat als u uw hele proces mogelijk kunt organiseren met behulp van Controller-klassen? Laten we eens kijken hoe. Controllers kunnen de groep binnen één klasse, alle bijbehorende logica van aanvraagafhandeling. Directory-app / Http / Controllers is verantwoordelijk voor het opslaan van controllers. In het MVC-framework staat 'C' voor Controller die fungeert als verkeersrichter tussen Views en Models. In dit onderwerp gaan we meer te weten over Laravel-controllers.

Lijst met Laravel-controllers

Hier is de onderstaande lijst met Laravel-controllers

1. Basiscontrollers

Hieronder kunt u een basisvoorbeeld van de controllerklasse bekijken. Het valt je misschien op dat 'MyController' 'Controller' uitbreidt. Hier is 'Controller' de basisklasse. Basisklasse 'Controller' biedt methoden zoals 'middleware', 'dispatch' en 'valideren' methoden wat het handig maakt. U kunt middleware gebruiken om het toe te wijzen aan de route van de controller of in de constructor van uw controller.

<_?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\User;
class MyController extends Controller
(
/**
* Show profile
*
*/
public function show($id)
(
return view('user.profile', ('user' => User::foundOrLost($id)));
)
)

De route naar MyController kan als volgt worden gedefinieerd:

Route::get('user/(id)', ' ');

Middleware toewijzen in routebestanden:

Route::get('profile', ' ')->middleware('auth');

Wanneer route-URI overeenkomt met een specifiek verzoek, wordt de methode 'show' op de klasse 'MyController' uitgevoerd en worden parameters die zijn opgegeven in de route ook toegewezen aan de methode.

Enkele extra kersen voor u:

  • Het is niet nodig om de volledige naamruimte voor de controller te vermelden, omdat 'RouteServiceProvider' automatisch wordt geladen in de routegroep met daarin de naamruimte, alle routebestanden. U hoeft alleen dat gedeelte van de naam op te geven dat na App \ Http \ Controllers wordt weergegeven.
  • Als u de controller met één actie wilt definiëren, kunt u dit doen door een enkele methode '__invoke' op uw controller te plaatsen.

2. Broncontrollers

Tijdens het maken van een applicatie moeten we CRUD-bewerkingen (Maken, Lezen, Bijwerken, Verwijderen) uitvoeren. Met Laravel resource controllers hoeft u alleen maar de controller aan te maken en kunt u rusten op Laravel. De Laravel-bronroute wijst de CRUD-bewerkingsroutes toe aan de controller die ook maar met één coderingsregel. Een enkele route kan worden geregistreerd voor alle methoden in routes.php bestand.

Laten we een voorbeeld nemen, stel dat u voor uw toepassing een controller wilt maken die alle inkomende HTTP-aanvragen afhandelt met betrekking tot opgeslagen 'afbeeldingen'. Dit zal snel worden gedaan met behulp van Artisan commando. Laten we het Artisan-commando 'make: controller' snel bekijken om als volgt een vergelijkbare controller te maken:

php artisan make:controller ImageController --resource

Een controller wordt gegenereerd op de app / Http / Controllers / ImageController.php met de bovenstaande opdracht. Deze controller zal bestaan ​​uit een methode voor elke beschikbare bronbewerking.

Nu kunt u een route declareren om verschillende acties zoals deze af te handelen:

Route::resource('images', 'ImageController');

Deze routeverklaring creëert veel routes die verschillende acties aankunnen. Deze controller heeft specifieke methoden voor elke beschikbare actie. Het bevat ook de opmerkingen die u informeren over de URI's en HTTP-werkwoorden die worden verwerkt.

Als u meer dan één resource-controller in één keer wilt registreren, kunt u dit doen met behulp van een array zoals hieronder weergegeven:

Route::resources((
'images' => 'ImageController',
'posts' => 'PostController'
));

Tabel met acties

WerkwoordURI / padActie evenementRoutenaam
POST/afbeeldingenop te slaanimages.store
KRIJGEN/afbeeldingeninhoudsopgaveimages.index
KRIJGEN/ Images / creërencreërenimages.create
KRIJGEN/ Images / (image)tonenimages.show
PUT / PATCH/ Images / (image)bijwerkenimages.update
KRIJGEN/ Images / (image) / bewerkenBewerkimages.edit
DELETE/ Images / (image)vernietigenimages.destroy

3. Impliciete controllers

Met behulp van deze controllers kunt u elke actie uitvoeren door slechts één route te definiëren. U moet eerst de route definiëren met behulp van Route :: controller als volgt:

Route::controller('users', 'MyController');

Hier worden twee argumenten aan de controller doorgegeven.

  1. Basis URI
  2. Klasse naam van de controller

Nu hoeft u alleen methoden toe te voegen aan 'MyController' met het HTTP-werkwoord eraan voorafgegaan.

class MyController extends Controller (
public function getIndex()
(
//
)
public function anyLogin()
(
//
)
public function postProfile()
(
//
)
)

De methoden 'index' zullen reageren op 'gebruikers', wat root / base URI is die door Controller wordt afgehandeld.

Een actie met meerdere woorden kan worden geopend met behulp van 'dash' in URI. Zie onderstaande controlleractie als een voorbeeld:

public function getAdminProfile() ()

Deze controlleractie in MyController reageert op URI 'gebruikers / admin-profiel'.

4. Afhankelijkheidsinjectie en controllers

Afhankelijkheden Injectie maakt het eenvoudiger om uw webapplicaties te testen en te onderhouden.

1. Constructorinjectie

Laravel beheert klasse-afhankelijkheden en lost alle controllers op. Uw controller heeft mogelijk afhankelijkheden in de constructor nodig, met Laravel kunt u bijna elk van deze afhankelijkheden typen. Laravel-servicecontroller lost alle afhankelijkheden automatisch op en injecteert deze in het exemplaar van de controller.

<_?php
namespace App\Http\Controllers;
use App\Repositories\UserRepository;
class MyController extends Controller
(
/**
* The user repository instance.
*/
protected $users;
/**
* Create a new controller instance.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
(
$this->users = $users;
)
)

2. Methode injectie

Afgezien van het injecteren van afhankelijkheden in de constructor, kunt u ze ook type-hint in methoden van uw controller. Bijvoorbeeld, bijvoorbeeld Illuminate \ Http \ Request kan als volgt in de methode van de controller worden geïnjecteerd:

<_?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MyController extends Controller
(
/**
* Store a new user.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
(
$name = $request->name;
//
)
)

Kenmerken van Laravel-controllers

Hieronder staan ​​een paar kenmerken van de laravelcontroller:

  • MVC-ondersteuning: Laravel wordt ondersteund door MVC Architecture. Het maakt de ontwikkeling snel, omdat de ene gebruiker aan logica kan werken, terwijl de andere zichtbaar werkt. Meerdere weergaven worden ondersteund voor een model zonder duplicatie omdat bedrijfslogica gescheiden is van presentatielogica.
  • Verificatie: Laravel heeft een ingebouwd systeem voor verificatie, u hoeft alleen andere aspecten te regelen, zoals het configureren van weergaven, modellen en controllers.
  • Beveiliging: Beveiliging is de belangrijkste factor waarmee rekening moet worden gehouden bij de ontwikkeling van een applicatie. Laravel biedt beveiliging door de ingebouwde applicatiebeveiliging.
  • Artisan: Artisan helpt bij het uitvoeren van repetitieve taken zonder dat ze handmatig door ontwikkelaars moeten worden uitgevoerd. Deze kunnen worden gebruikt om de databasestructuur, code, een migratie te maken om deze beheersbaar te maken.
  • Sjablonen: met de innovatieve en krachtige sjabloonengine van Laravel kunnen ontwikkelaars dynamische webtoepassingen maken.

Aanbevolen artikelen

Dit is een gids voor Laravel-controllers. Hier bespreken we een behoorlijk aantal Laravel-controllerconcepten waarmee u uw eigen controller voor uw toepassing kunt maken, die tegelijkertijd veilig en krachtig is. U kunt ook het volgende artikel bekijken voor meer informatie -

  1. Wat is Laravel Framework?
  2. Laravel-opdrachten
  3. Wat is Laravel?
  4. Wat is Servlet?