Skip to content

Commit

Permalink
Added validation of the content element code
Browse files Browse the repository at this point in the history
  • Loading branch information
simba77 committed Feb 10, 2024
1 parent 71e5d03 commit ad8cc72
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 10 deletions.
18 changes: 13 additions & 5 deletions src/Controllers/Admin/ContentElementsController.php
Expand Up @@ -33,11 +33,17 @@ public function create(int $type, ?int $sectionId, Request $request, ContentElem
$this->metaTagManager->setAll(__('Create Element'));
$this->navChain->add(__('Create Element'));

$form->setValues(
[
'content_type_id' => $type,
'section_id' => $sectionId !== 0 ? $sectionId : null,
]
);

if ($request->isPost()) {
try {
$form->validate();
$values = $form->getRequestValues();
$values['code'] = empty($values['code']) ? Str::slug($values['name']) : Str::slug($values['code']);
$values['content_type_id'] = $type;
if ($sectionId > 0) {
$values['section_id'] = $sectionId;
Expand Down Expand Up @@ -72,9 +78,12 @@ public function edit(int $elementId, Request $request, ContentElementForm $form)

$form->setValues(
[
'name' => $element->name,
'code' => $element->code,
'detail_text' => $element->detail_text,
'id' => $element->id,
'content_type_id' => $element->content_type_id,
'section_id' => $element->section_id,
'name' => $element->name,
'code' => $element->code,
'detail_text' => $element->detail_text,
]
);

Expand All @@ -84,7 +93,6 @@ public function edit(int $elementId, Request $request, ContentElementForm $form)
try {
$form->validate();
$values = $form->getRequestValues();
$values['code'] = empty($values['code']) ? Str::slug($values['name']) : Str::slug($values['code']);
$element->update($values);
$this->session->flash('message', __('The Element was Successfully Updated'));

Expand Down
4 changes: 0 additions & 4 deletions src/Controllers/Admin/ContentTypesController.php
Expand Up @@ -4,7 +4,6 @@

namespace Johncms\Content\Controllers\Admin;

use Illuminate\Support\Str;
use Johncms\Content\Forms\ContentTypeForm;
use Johncms\Content\Models\ContentType;
use Johncms\Content\Resources\ContentTypeResource;
Expand All @@ -15,8 +14,6 @@
use Johncms\Http\Response\RedirectResponse;
use Johncms\Http\Session;

use const _PHPStan_39fe102d2\__;

class ContentTypesController extends BaseAdminController
{
protected string $moduleName = 'johncms/content';
Expand Down Expand Up @@ -84,7 +81,6 @@ public function edit(int $id, Request $request, ContentTypeForm $form): string |
try {
$form->validate();
$values = $form->getRequestValues();
$values['code'] = empty($values['code']) ? Str::slug($values['name']) : Str::slug($values['code']);
$contentType->update($values);
$this->session->flash('message', __('The Content Type was Successfully Updated'));
return new RedirectResponse(route('content.admin.index'));
Expand Down
25 changes: 24 additions & 1 deletion src/Forms/ContentElementForm.php
Expand Up @@ -4,6 +4,9 @@

namespace Johncms\Content\Forms;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Str;
use Johncms\Content\Models\ContentElement;
use Johncms\Forms\AbstractForm;
use Johncms\Forms\Inputs\InputText;
use Johncms\Forms\Inputs\Textarea;
Expand All @@ -24,7 +27,20 @@ protected function prepareFormFields(): array
->setLabel(__('Code'))
->setPlaceholder(p__('placeholder', 'Enter the Code of the Element'))
->setNameAndId('code')
->setValue($this->getValue('code'));
->setValue($this->getValue('code'))
->setValidationRules(
[
'ModelNotExists' => [
'model' => ContentElement::class,
'field' => 'code',
'exclude' => function (Builder $query) {
return $query->where('content_type_id', '=', $this->getValue('content_type_id'))
->where('section_id', '=', $this->getValue('section_id'))
->where('id', '!=', $this->getValue('id'));
},
],
]
);

$fields['detail_text'] = (new Textarea())
->setLabel(__('Detail Text'))
Expand All @@ -34,4 +50,11 @@ protected function prepareFormFields(): array

return $fields;
}

public function getRequestValues(): array
{
$values = parent::getRequestValues();
$values['code'] = empty($values['code']) ? Str::slug($values['name']) : Str::slug($values['code']);
return $values;
}
}

0 comments on commit ad8cc72

Please sign in to comment.