This forum has moved to a new location and is in read-only mode. Please visit talk.octobercms.com to access the new location.
I am using Builder plugin to create plugins and did field validations in my model in one of my plugins which works fine.
Let's say I have a validation something like this in one my plugin call it as Team.
Model File: technobrave\team\models\Team.php
<?php namespace Technobrave\Team\Models;
use Model;
/**
* Model
*/
class Team extends Model
{
use \October\Rain\Database\Traits\Validation;
/*
* Validation
*/
public $rules = [
'name' => 'required|unique:technobrave_team_',
'photo' => 'required',
'description'=>'max:1000',
'position' => 'required',
'phone' => 'required',
'mobile' => 'required',
'email' => 'required|email|unique:technobrave_team_',
'website' => 'url',
];
public $customMessages = [
'name.required' => 'Please enter team member name',
'name.unique' => 'This team member name already exists',
'photo.required' => 'Please select team member photo',
'description.max' => 'Please enter maximum 1000 characters for description',
'position.required' => 'Please enter team member position',
'phone.required' => 'Please enter team member phone number',
'mobile.required' => 'Please enter team member mobile number',
'email.required' => 'Please enter team member email address',
'email.email' => 'Please enter valid team member email address',
'email.unique' => 'This email address already exists',
'website.url' => 'Please enter valid team member url',
];
}
This works absolutely fine, I am able to see the validations, but they are coming one after another. Instead I want them to come up all at once. For all the fields.
Is this possible ? How can I accomplish this ?
Thanks
Ok Guys, Here is how I resolved this issue.
Simply go to your plugin which you want to work on and open its Plugin.php file and add following lines of code.
Plugin.php
public function boot()
{
Event::listen('backend.page.beforeDisplay', function($controller, $action, $params) {
/* Here you can put your css file wherever you want .. I put in my current theme's directory */
$controller->addCss('/themes/your_current_theme_folder_name/assets/css/general.css');
});
}
Done forget to add use Event;
before you add your class
code in this file.
Open general.css file, I put this line of code.
.flash-message.fade.in {
white-space: pre;
}
Next Open plugin's model file and put below code.
Team.php (Model File)
public $throwOnValidation = false;
public function beforeValidate()
{
static $called = false;
if (!$called)
{
$called = true;
if (!$this->validate())
{
throw new \October\Rain\Exception\ValidationException([
'Errors' => collect($this->validationErrors)->reduce(function (
$msg,
$error
) {
return $msg . $error[0] . "\r\n";
})
]);
}
}
}
And its done. This is how I sorted it out.
Hope this helps.
Last updated
1-2 of 2