Class ContextFactory
Factory for getting form context instance based on provided data.
Property Summary
-
$providers protected
array
Context providers.
Method Summary
-
__construct() public
Constructor.
-
addProvider() public
Add a new context type.
-
createWithDefaults() public static
Create factory instance with providers "array", "form" and "orm".
-
get() public
Find the matching context for the data.
Method Detail
__construct() ¶ public
__construct(array $providers = [])
Constructor.
Parameters
-
array
$providers optional Array of provider callables. Each element should be of form
['type' => 'a-string', 'callable' => ..]
addProvider() ¶ public
addProvider(string $type, callable $check): $this
Add a new context type.
Form context types allow FormHelper to interact with data providers that come from outside CakePHP. For example if you wanted to use an alternative ORM like Doctrine you could create and connect a new context class to allow FormHelper to read metadata from doctrine.
Parameters
-
string
$type The type of context. This key can be used to overwrite existing providers.
-
callable
$check A callable that returns an object when the form context is the correct type.
Returns
$this
createWithDefaults() ¶ public static
createWithDefaults(array $providers = []): static
Create factory instance with providers "array", "form" and "orm".
Parameters
-
array
$providers optional Array of provider callables. Each element should be of form
['type' => 'a-string', 'callable' => ..]
Returns
static
get() ¶ public
get(Cake\Http\ServerRequest $request, array $data = []): Cake\View\Form\ContextInterface
Find the matching context for the data.
If no type can be matched a NullContext will be returned.
Parameters
-
Cake\Http\ServerRequest
$request Request instance.
-
array
$data optional The data to get a context provider for.
Returns
Cake\View\Form\ContextInterface
Throws
RuntimeException
When a context instance cannot be generated for given entity.