Lookup

The Lookup Crud Action will display a record from a data source for auto-complete purposes. Used mostly for Crud-View.

Configuration

Note

Before applying any configuration to an action it must be mapped first.

If the action has not been mapped an exception will be raised.

enabled

Test or modify if the Crud Action is enabled or not.

When a CrudAction is disabled, Crud will not handle any requests to the action, and CakePHP will raise the normal \Cake\Error\MissingActionException exception if you haven’t implemented the action in your controller.

Warning

If you have enabled Crud and you are still receiving a MissingActionException, ensure the action is enabled and that the controller has the \Crud\Controller\ControllerTrait implemented.

To test if an action is enabled, call the enabled method on the action.

$this->Crud->action()->enabled();

To disable an action, call the disable method on the action.

$this->Crud->action()->disable();

To enable an action, call the enable method on the action.

$this->Crud->action()->enable();

To disable or enable multiple actions at the same time, Crud Component provides helper methods.

The enable and disable method can take a string or an array, for easy mass-updating.

$this->Crud->enable('index');
$this->Crud->enable(['index', 'add']);

$this->Crud->disable('index');
$this->Crud->disable(['index', 'add']);

Note

These methods simply calls the enable and disable method in each Crud Action class, and do not provide any magic other than mass updating.

Warning

While it’s possible to update the enabled property directly on an action using the config methods, it’s not recommend, as important cleanup logic will not be applied if you use the setConfig() method directly.

view

Get or set the view file to render at the end of the request.

The view setting is passed directly and unmodified to Controller::render().

To get the current configured view call the view method without any arguments.

$this->Crud->action()->view();

To change the view to render, pass a string as first argument.

$this->Crud->action()->view('my_custom_view');

Note

If the first parameter is NULL - which is the default value - the normal CakePHP behavior will be used.

Warning

Due to the nature of this method, once a custom view has been set, it’s not possible to revert back to the default behavior by calling ->view(null) as it will return the current configuration.

viewVar

Note

This maps directly to the $key argument in Controller::set($key, $value)

Change the name of the variable which contains the result of a index or view action query result.

To get the current configured viewVar call the viewViar method without any arguments.

$this->Crud->action()->viewVar();

To change the viewVar, pass a string as first argument.

$this->Crud->action()->viewVar('items');

For Index Action the default is plural version of the controller name.

Having a controller named PostsController would mean that the viewVar would be posts by default.

For View Action the default is singular version of the controller name.

Having a controller named PostsController would mean that the viewVar would be post by default.

serialize

Note

This setting is only relevant if you use the API listener.

Note

The API listener will always enforce success and data to be part of the _serialize array.

This method is intended to allow you to add additional keys to your API responses with ease. An example of this is the API Query Log.

To get the current configured serialize keys call the serialize method without any arguments.

$this->Crud->action()->serialize();

To change the serialize keys, pass a string or an array as first argument.

If a string is passed, it will be cast to array automatically.

$this->Crud->action()->serialize(['my', 'extra', 'keys']);

Events

This is a list of events emitted from the Lookup Crud Action.

Please see the events documentation for a full list of generic properties and how to use the event system correctly.

Crud.startup

Called after the Controller::beforeFilter() and before the Crud action.

It’s emitted from CrudComponent::startup() and thus is fired in the same cycle as all Component::startup() events.

Crud.beforeFilter

Triggered when a CrudAction is going to handle a CakePHP request.

It’s emitted from CrudComponent::beforeFilter and thus is fired in the same cycle as all Controller::beforeFilter events.

Crud.beforeLookup

This event is emitted before Controller::paginate() is called inside the Lookup Action.

Add Conditions

public function lookup()
{
    $this->Crud->on('beforeLookup', function(\Cake\Event\EventInterface $event) {
        $this->paginate['conditions']['is_active'] = true;
    });

    return $this->Crud->execute();
}

Crud.afterLookup

This event is emitted right after the call to Controller::paginate() in the Lookup Action.

The entities property of the event object contains all the database records found in the pagination call.

Modify the Result

public function lookup()
{
    $this->Crud->on('afterLookup', function(\Cake\Event\EventInterface $event) {
        foreach ($event->getSubject()->entities as $entity) {
            // $entity is an entity
        }
    });

    return $this->Crud->execute();
}

Crud.recordNotFound

Note

This event will throw an exception.

The default configuration will thrown an Cake\Error\NotFoundException which will yield a 404 response.

The event is triggered after a find did not find any records in the database.

You can modify the exception class thrown using CrudComponent::message method

Crud.beforeRender

Invoked right before the view will be rendered.

This is also before the controllers own beforeRender callback.