Skip to content

Commit

Permalink
テーマ設定の「リンク先URL」欄のルートパスやnullがエラーになる問題を改善
Browse files Browse the repository at this point in the history
IwasakiRyuichi authored Jan 31, 2025
1 parent 4639019 commit bb3efd9
Showing 3 changed files with 70 additions and 31 deletions.
27 changes: 27 additions & 0 deletions plugins/baser-core/src/Model/Validation/BcValidation.php
Original file line number Diff line number Diff line change
@@ -671,4 +671,31 @@ public static function checkWithJson($string, $key, $regex)
return false;
}
}

/**
* url形式 (ルートパスと空白許容)であることを確認する
* @param $string
* @return bool
*/
public static function rootPath($value):bool
{

// 文字列チェック
if(!is_string($value)) {
return false;
}

// 入力値が空文字は許容
if ($value === '') {
return true;
}

// `parse_url` でパス部分を取得
$parsedUrl = parse_url($value);


// `path` の存在を確認し、スラッシュから始まっているかをチェック
return isset($parsedUrl['path']) && preg_match('/^\/[a-zA-Z0-9\-_\/]*$/', $parsedUrl['path']);
}

}
Original file line number Diff line number Diff line change
@@ -79,8 +79,9 @@
<p><?php echo $this->BcAdminForm->control('logo', ['type' => 'file']) ?><?php if ($themeConfig->logo): ?><?php echo $this->BcAdminForm->control('logo_delete', ['type' => 'checkbox', 'label' => __d('baser_core', '削除する')]) ?><?php endif ?><?php echo $this->BcAdminForm->error('logo') ?></p>
<?php echo $this->BcAdminForm->control('logo_alt', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', '説明文') ?>]</small><br>
<?php echo $this->BcAdminForm->control('logo_link', ['type' => 'text', 'size' => 50]) ?><?php echo $this->BcAdminForm->error('logo_link') ?>
<?php echo $this->BcAdminForm->control('logo_link', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', 'リンク先URL') ?>]</small>
<?php echo $this->BcAdminForm->error('logo_link') ?>
</td>
</tr>
<tr>
@@ -90,8 +91,9 @@
<p><?php echo $this->BcAdminForm->control('main_image_1', ['type' => 'file']) ?><?php if ($themeConfig->main_image_1): ?><?php echo $this->BcAdminForm->control('main_image_1_delete', ['type' => 'checkbox', 'label' => __d('baser_core', '削除する')]) ?><?php endif ?><?php echo $this->BcAdminForm->error('main_image_1') ?></p>
<?php echo $this->BcAdminForm->control('main_image_alt_1', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', '説明文') ?>]</small><br>
<?php echo $this->BcAdminForm->control('main_image_link_1', ['type' => 'text', 'size' => 50]) ?><?php echo $this->BcAdminForm->error('main_image_link_1') ?>
<?php echo $this->BcAdminForm->control('main_image_link_1', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', 'リンク先URL') ?>]</small>
<?php echo $this->BcAdminForm->error('main_image_link_1') ?>
</td>
</tr>
<tr>
@@ -101,8 +103,9 @@
<p><?php echo $this->BcAdminForm->control('main_image_2', ['type' => 'file']) ?><?php if ($themeConfig->main_image_2): ?><?php echo $this->BcAdminForm->control('main_image_2_delete', ['type' => 'checkbox', 'label' => __d('baser_core', '削除する')]) ?><?php endif ?><?php echo $this->BcAdminForm->error('main_image_2') ?></p>
<?php echo $this->BcAdminForm->control('main_image_alt_2', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', '説明文') ?>]</small><br>
<?php echo $this->BcAdminForm->control('main_image_link_2', ['type' => 'text', 'size' => 50]) ?><?php echo $this->BcAdminForm->error('main_image_link_2') ?>
<?php echo $this->BcAdminForm->control('main_image_link_2', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', 'リンク先URL') ?>]</small>
<?php echo $this->BcAdminForm->error('main_image_link_2') ?>
</td>
</tr>
<tr>
@@ -112,8 +115,9 @@
<p><?php echo $this->BcAdminForm->control('main_image_3', ['type' => 'file']) ?><?php if ($themeConfig->main_image_3): ?><?php echo $this->BcAdminForm->control('main_image_3_delete', ['type' => 'checkbox', 'label' => __d('baser_core', '削除する')]) ?><?php endif ?><?php echo $this->BcAdminForm->error('main_image_3') ?></p>
<?php echo $this->BcAdminForm->control('main_image_alt_3', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', '説明文') ?>]</small><br>
<?php echo $this->BcAdminForm->control('main_image_link_3', ['type' => 'text', 'size' => 50]) ?><?php echo $this->BcAdminForm->error('main_image_link_3') ?>
<?php echo $this->BcAdminForm->control('main_image_link_3', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', 'リンク先URL') ?>]</small>
<?php echo $this->BcAdminForm->error('main_image_link_3') ?>
</td>
</tr>
<tr>
@@ -123,8 +127,9 @@
<p><?php echo $this->BcAdminForm->control('main_image_4', ['type' => 'file']) ?><?php if ($themeConfig->main_image_4): ?><?php echo $this->BcAdminForm->control('main_image_4_delete', ['type' => 'checkbox', 'label' => __d('baser_core', '削除する')]) ?><?php endif ?><?php echo $this->BcAdminForm->error('main_image_4') ?></p>
<?php echo $this->BcAdminForm->control('main_image_alt_4', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', '説明文') ?>]</small><br>
<?php echo $this->BcAdminForm->control('main_image_link_4', ['type' => 'text', 'size' => 50]) ?><?php echo $this->BcAdminForm->error('main_image_link_4') ?>
<?php echo $this->BcAdminForm->control('main_image_link_4', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', 'リンク先URL') ?>]</small>
<?php echo $this->BcAdminForm->error('main_image_link_4') ?>
</td>
</tr>
<tr>
@@ -134,8 +139,9 @@
<p><?php echo $this->BcAdminForm->control('main_image_5', ['type' => 'file']) ?><?php if ($themeConfig->main_image_5): ?><?php echo $this->BcAdminForm->control('main_image_5_delete', ['type' => 'checkbox', 'label' => __d('baser_core', '削除する')]) ?><?php endif ?><?php echo $this->BcAdminForm->error('main_image_5') ?></p>
<?php echo $this->BcAdminForm->control('main_image_alt_5', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', '説明文') ?>]</small><br>
<?php echo $this->BcAdminForm->control('main_image_link_5', ['type' => 'text', 'size' => 50]) ?><?php echo $this->BcAdminForm->error('main_image_link_5') ?>
<?php echo $this->BcAdminForm->control('main_image_link_5', ['type' => 'text', 'size' => 50]) ?>
<small>[<?php echo __d('baser_core', 'リンク先URL') ?>]</small>
<?php echo $this->BcAdminForm->error('main_image_link_5') ?>
</td>
</tr>
<?php echo $this->BcAdminForm->dispatchAfterForm() ?>
56 changes: 31 additions & 25 deletions plugins/bc-theme-config/src/Model/Table/ThemeConfigsTable.php
Original file line number Diff line number Diff line change
@@ -127,13 +127,13 @@ public function validationKeyValue(Validator $validator): Validator
'message' => __d('baser_core', '許可されていないファイルです。')
]
]);

$validator->add('logo_link', [
'urlCheck' => [
'rule' => ['url', true],
'linkUrl' => [
'rule' => 'rootPath',
'provider' => 'bc',
'message' => __d('baser_core', '無効なURLです')
]
]);
]
]);

// main_image_1
$validator->add('main_image_1', [
@@ -144,11 +144,13 @@ public function validationKeyValue(Validator $validator): Validator
]
]);

$validator->add('main_image_link_1',[
'urlCheck' => [
'rule' => ['url', true],

$validator->add('main_image_link_1', [
'linkUrl' => [
'rule' => 'rootPath',
'provider' => 'bc',
'message' => __d('baser_core', '無効なURLです')
]
]
]);

// main_image_2
@@ -160,11 +162,12 @@ public function validationKeyValue(Validator $validator): Validator
]
]);

$validator->add('main_image_link_2',[
'urlCheck' => [
'rule' => ['url', true],
$validator->add('main_image_link_2', [
'linkUrl' => [
'rule' => 'rootPath',
'provider' => 'bc',
'message' => __d('baser_core', '無効なURLです')
]
]
]);

// main_image_3
@@ -176,11 +179,12 @@ public function validationKeyValue(Validator $validator): Validator
]
]);

$validator->add('main_image_link_3',[
'urlCheck' => [
'rule' => ['url', true],
$validator->add('main_image_link_3', [
'linkUrl' => [
'rule' => 'rootPath',
'provider' => 'bc',
'message' => __d('baser_core', '無効なURLです')
]
]
]);

// main_image_4
@@ -192,11 +196,12 @@ public function validationKeyValue(Validator $validator): Validator
]
]);

$validator->add('main_image_link_4',[
'urlCheck' => [
'rule' => ['url', true],
$validator->add('main_image_link_4', [
'linkUrl' => [
'rule' => 'rootPath',
'provider' => 'bc',
'message' => __d('baser_core', '無効なURLです')
]
]
]);

// main_image_5
@@ -208,11 +213,12 @@ public function validationKeyValue(Validator $validator): Validator
]
]);

$validator->add('main_image_link_5',[
'urlCheck' => [
'rule' => ['url', true],
$validator->add('main_image_link_5', [
'linkUrl' => [
'rule' => 'rootPath',
'provider' => 'bc',
'message' => __d('baser_core', '無効なURLです')
]
]
]);
return $validator;
}

0 comments on commit bb3efd9

Please sign in to comment.