Skip to content

Commit

Permalink
added request to add rules and messages on element sltub
Browse files Browse the repository at this point in the history
  • Loading branch information
Luke Snowden committed Dec 5, 2018
1 parent d4ee0a4 commit 211aee1
Show file tree
Hide file tree
Showing 16 changed files with 162 additions and 12 deletions.
31 changes: 31 additions & 0 deletions app/Libs/BaseElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ abstract class BaseElement implements ElementBlueprint
*/
protected $value = null;

/**
* @var array
*/
protected $rules = [];

/**
* @var array
*/
protected $messages = [];

/**
* @return string
*/
Expand All @@ -48,6 +58,18 @@ protected function attributes()
return trim( $attributes );
}

/**
* @return array
*/
public function getValidationData()
{
return [
'name' => $this->name,
'rules' => $this->rules,
'messages' => $this->messages
];
}

/**
* @return void
*/
Expand Down Expand Up @@ -129,6 +151,15 @@ public function getValueReliantObjects()
return [ $this ];
}

/**
* @return void
* @param $request
*/
public function beforeValidation( Request $request )
{
//
}

/**
* @return null|string
*/
Expand Down
21 changes: 20 additions & 1 deletion app/Libs/Register.php
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ protected function setState( $state )
*/
protected function setSession( $key, $value )
{
session()->set( $key, $value );
session()->put( $key, $value );
}

/**
Expand Down Expand Up @@ -371,4 +371,23 @@ public function dispatchPayload( $viewClass, $model, $request )
}
}

/**
* @param $viewClass
* @param $request
* @return array
*/
public function getValidation( $viewClass, $request )
{
$view = new $viewClass;
$rules = [];
$messages = [];
foreach( $view->elements() as $element ) {
$element->beforeValidation( $request );
$data = $element->getValidationData();
$rules[ $data[ 'name' ] ] = $data[ 'rules' ];
$messages = array_merge( $messages, $data[ 'messages' ] );
}
return compact( 'rules', 'messages' );
}

}
68 changes: 68 additions & 0 deletions app/Libs/Request.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php

namespace Laraview\Libs;

use Illuminate\Foundation\Http\FormRequest;

abstract class Request extends FormRequest
{

/**
* @var
*/
protected $view;

/**
* @var array
*/
protected $validation = [
'rules' => [],
'messages' => []
];

/**
* @param $key
* @return object|string
*/
public function parameter( $key )
{
return $this->route()->parameter( $key );
}

/**
* @return void
*/
protected function prepareForValidation()
{
if( is_string( $this->view ) ) {
$this->validation = app( Register::class )->getValidation( $this->view, $this );
}
}

/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* @return mixed
*/
public function rules()
{
return $this->validation[ 'rules' ];
}

/**
* @return array|mixed
*/
public function messages()
{
return $this->validation[ 'messages' ];
}

}
20 changes: 20 additions & 0 deletions app/Libs/Traits/ElementInsertion.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Exception;
use Laraview\Libs\Blueprints\ElementBlueprint;
use Laraview\Libs\Blueprints\LayoutBlueprint;

trait ElementInsertion
{
Expand Down Expand Up @@ -54,6 +55,25 @@ public function insertElement( $element )
return $this;
}

/**
* @param $layout
* @return $this
* @throws Exception
*/
public function insertLayout( $layout )
{
$this->elements[ $layout ] = new $layout;
if( ! $this->elements[ $layout ] instanceof LayoutBlueprint ) {
throw new Exception( "Layout {$layout} must implement " . LayoutBlueprint::class );
}
if( property_exists( $this, 'region' ) ) {
$this->elements[ $layout ]->region( $this->region );
} else {
$this->elements[ $layout ]->region( $this );
}
return $this;
}

/**
* @param $element
* @param $targetElement
Expand Down
11 changes: 11 additions & 0 deletions app/Libs/Traits/Payload.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Laraview\Libs\Traits;

use Closure;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\View\View;
use Laraview\Libs\Blueprints\RegisterBlueprint;
use Laraview\Libs\Utils\ViewDispatcher;
Expand Down Expand Up @@ -88,4 +89,14 @@ protected function viewDispatcher( View $view )
return $dispatcher->view();
}

/**
* @return mixed
*/
public function query()
{
return $this->modelDispatcher( function( Builder $builder ) {
return $builder;
} );
}

}
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
},
"extra": {
"laravel": {
"dont-discover": [
"providers": [
"Laraview\\Providers\\AppServiceProvider"
]
}
},
Expand Down
2 changes: 1 addition & 1 deletion stubs/elements/checkbox.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Checkbox implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (int) $request->input( $this->name );
}

/**
Expand Down
2 changes: 1 addition & 1 deletion stubs/elements/date.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Date implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

}
2 changes: 1 addition & 1 deletion stubs/elements/email.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Email implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

}
2 changes: 1 addition & 1 deletion stubs/elements/number.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Number implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (float) $request->input( $this->name );
}

}
2 changes: 1 addition & 1 deletion stubs/elements/password.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Password implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

}
2 changes: 1 addition & 1 deletion stubs/elements/radio.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Radio implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

/**
Expand Down
2 changes: 1 addition & 1 deletion stubs/elements/select.stub
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class [CLASS_NAME] extends Select implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

}
2 changes: 1 addition & 1 deletion stubs/elements/text.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Text implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

}
2 changes: 1 addition & 1 deletion stubs/elements/textarea.stub
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class [CLASS_NAME] extends Textarea implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

}
2 changes: 1 addition & 1 deletion stubs/elements/time.stub
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class [CLASS_NAME] extends Time implements ElementBlueprint
*/
public function receivePayload( $model, $request )
{
$model->{$this->name} = $request->input( $this->name );
$model->{$this->name} = (string) $request->input( $this->name );
}

}

0 comments on commit 211aee1

Please sign in to comment.