Omid Omid - 20 days ago 6
PHP Question

laravel get value from array of controllers

this is my

PermissionController.php


foreach (Route::getRoutes() as $route)
{
$action = $route->getAction();

if (array_key_exists('controller', $action))
{
$controllers[] = $action['controller'];
}
}
return view('permission.create')->withControllers($controllers);


and my
permission/create/php
is like this :

{!! Form::select('class_name[]', $controllers, null, ['class' => 'form-control', 'multiple']) !!}


here in controller, it put the name of all controllers in
$controller
and send it to the
blade
but when i select some of them, the request gives me their keys instead of value

public function store(Request $request)
{
return $request->get('class_name');
}


if I select the first one and third one the output is for example :
{"1","3"}

but I want their value like this :
{"UserController.php", "TestController.php"}

Answer

use this code instead Forms::Select or create your custom List with Laravel built-in List Function :

<select name="class_name[]" multiple>
@foreach($controllers as $class)
    <option value="{{$class}}" >{{$class}}</option>
@endforeach
</select>

or simply replace the

 $controllers[] = $action['controller'];

with

$controllers[$action['controller']] = $action['controller'];