Advanced-methods Last updated: 2023-08-27

Here we will put all the additional functions through which to change the state of each element

Let's take logically the text element as an example

We know that this element has the following 

placeholder , readonly disabled 

So how does it affect this attributes?

1 - placeholder

text()->make('User Name','name')->placeholder('Write Your User Name Here')

2 - readonly

text()->make('User Name','name')->readonly()

3 - disabled

text()->make('User Name','name')->disabled()

These methods can be used dynamically

for example

// boolean
->disabled(false) // or
 return $this->id == 1;

// boolean
->readonly(false)// or
 return $this->id == 1;

// just text
->placeholder('your text')// or
 return 'your text';

// add help text under input or html
->help('your text')// or
 return 'your text';

// text align in input
->textAlign('left')// left,center,right
 return 'left';


With  textarea you can specify cols and rows  

textarea()->make('add content','content')->cols(10)->rows(50)


checkbox() input

	->make('Allow', 'allow')
		->default('On') // auto checked in create page
// you can add boolean value 1,2 | on,off , yes,no etc..		
		->trueVal('On') // true value 
		->falseVal('Off') // false value 


dropdown select

select()->make('Account Type','account_type') // you can use disabled() with this element
->selected('user') //  select default value 

// or with dynamic values
->selected(1) // select default value 




Upload  file mixed Files or by MimeType

		->make('File', 'file')
		->accept('image/png', 'image/jpeg') // mimeTypes 
		->deletable(false) // disable delete button in show or update page
		->disableDownloadButton() // disable download button in show or update page



Upload  image  

image()->make('Image', 'image')
		->deletable(false) // true|false
		->disablePreviewButton() // disable perview modal to show image
	   ->whenStore(function ($model) {
	    // when store can handel one or more values with multiple column
		// using $model parameter
	 		$file = url('storage/users/'.$model->id.'/'.$model->name);
	 		return [
	 			'image' => $file,
		->path('users/{id}') // static path or dynamic with $model
	// ->path(function ($model) {
	// 		return 'users/'.$model->id.'/'.$model->name;
	// 	})
		->accept('image/png', 'image/jpeg')


upload video

this input can handling your media streaming videos based on library with five themes

	video()	->make('video', 'video') // you can use path and whenStore , whenUpdate method
		->disableDownloadButton() // true | false
		->disablePreviewButton() // true | false
		->accept('video/*') // mimeTypes


upload audio

 audio()->make('Audio', 'audio')
		->deletable(false) // true | false
		->disableDownloadButton() // true | false
		->disablePreviewButton() // true | false
		->accept('audio/*') // mimeTypes


 color & tel & url

 color()->make('Color', 'color') // you can use help & placeholder , whenstore , whenUpdate
 tel()->make('Mobile', 'mobile') // same  
 uri()	->make('URL', 'url') // same  



 ckeditor5 Editor nested textarea based On

// you can use help & placeholder , whenstore , whenUpdate
 ckeditor()->make('content', 'content') 



 values methods 

text()->make('User Name','name')->value('some value') 
// or dynamic
//return 'some text '; 
return $model->columnName; // with update or $this->columnName;

// or specify when Create or Store data
text()->make('User Name','name')->valueWhenCreate('some value') 
// or dynamic
//return 'some text '; 
return $model->columnName; // with update or $this->columnName;

// or specify when Edit or Update data
text()->make('User Name','name')->valueWhenUpdate('some value') 
// or dynamic
//return 'some text '; 
return $model->columnName; // with update or $this->columnName;



 whenStore or whenUpdate strategy   

you can use all functionality from current model with whenStore or whenUpdate to get more benefits 

like makeVisible('password',etc…) Column for example password 

                return bcrypt(request('password'));
            })  ->whenUpdate(function(){
                return !empty(request('password'))? bcrypt(request('password')):$this->makeVisible('password')->password;

so you can call any available method from model whenStore or Update Value