在Sonata Admin中设置依赖于其他属性值的属性值可以通过使用表单事件和JavaScript来实现。以下是一个示例的步骤:
Product
,其中有两个属性category
和subCategory
,subCategory
的值依赖于category
的值。在配置文件中,我们可以这样定义:$formMapper
->add('category', 'choice', [
'choices' => [
'Electronics' => 'Electronics',
'Clothing' => 'Clothing',
'Books' => 'Books',
],
'required' => true,
])
->add('subCategory', 'choice', [
'choices' => [
'Electronics' => [
'Mobile Phones' => 'Mobile Phones',
'Laptops' => 'Laptops',
'Tablets' => 'Tablets',
],
'Clothing' => [
'Men' => 'Men',
'Women' => 'Women',
'Kids' => 'Kids',
],
'Books' => [
'Fiction' => 'Fiction',
'Non-Fiction' => 'Non-Fiction',
],
],
'required' => true,
]);
category
属性的变化,并根据其值来更新subCategory
属性的选项。可以在Sonata Admin的模板文件中添加以下代码:$(document).ready(function() {
// 监听category属性的变化
$('#product_category').change(function() {
var category = $(this).val();
var subCategoryOptions = $('#product_subCategory');
// 根据category的值更新subCategory的选项
switch (category) {
case 'Electronics':
subCategoryOptions.html('<option value="Mobile Phones">Mobile Phones</option><option value="Laptops">Laptops</option><option value="Tablets">Tablets</option>');
break;
case 'Clothing':
subCategoryOptions.html('<option value="Men">Men</option><option value="Women">Women</option><option value="Kids">Kids</option>');
break;
case 'Books':
subCategoryOptions.html('<option value="Fiction">Fiction</option><option value="Non-Fiction">Non-Fiction</option>');
break;
default:
subCategoryOptions.html('');
break;
}
});
});
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
完成上述步骤后,当用户在Sonata Admin的表单中选择category
属性的值时,subCategory
属性的选项将根据所选的category
值进行更新。
请注意,上述示例中的代码仅供参考,具体的实现方式可能因Sonata Admin的版本和个人需求而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云