PHP   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – 如何在Laravel中设置禁用选择选项?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在控制器功能中,我提取了我已经使用过的所有属性和属性.

所有属性:

$attributeNames = array('' => 'Select Attribute Name') + AttributeName::lists('name','id');

已经采取的属性:

$selectedAttributeNames = $xmlDocument->masterInformation->masterAttributes;

如何将selectedAttributeNames设为禁用?

这是var_dump($selectedAttributeNames)的输出:

object(Illuminate\ Database\ Eloquent\ Collection) #312 (1) {
    ["items":protected]= > array(1) {
        [0] => object(MasterAttribute) #310 (20) {
            ["table":protected]= > string(16) "master_attribute"
            ["guarded": protected] => array(1) {
                [0] => string(2) "id"
            }
            ["connection": protected] => NULL["primaryKey": protected] => string(2) "id"
            ["perPage": protected] => int(15)["incrementing"] => bool(true)["timestamps"] => bool(true)["attributes": protected] => array(7) {
                ["id"] => int(1)["xpath"] => string(17)
                "this is the xpath"
                ["attribute_name_id"] => int(1)["master_information_id"] => int(6)["default_value"] => string(25) "This is the default value"
                ["created_at"] => string(19) "2014-07-19 17:53:55"
                ["updated_at"] => string(19) "2014-07-19 17:53:55"
            }
            ["original": protected] => array(7) {
                ["id"] => int(1)["xpath"] => string(17) "this is the xpath"
                ["attribute_name_id"] => int(1)["master_information_id"] => int(6)["default_value"] => string(25) "This is the default value"
                ["created_at"] => string(19) "2014-07-19 17:53:55"
                ["updated_at"] => string(19) "2014-07-19 17:53:55"
            }
            ["relations": protected] => array(0) {}
            ["hidden": protected] => array(0) {}
            ["visible": protected] => array(0) {}
            ["appends": protected] => array(0) {}
            ["fillable": protected] => array(0) {}
            ["dates": protected] => array(0) {}
            ["touches": protected] => array(0) {}
            ["observables": protected] => array(0) {}
            ["with": protected] => array(0) {}
            ["morphClass": protected] => NULL["exists"] => bool(true)
        }
    }
}

解决方法

不幸的是,Laravel的Form :: select()辅助方法没有提供一种方法来进入为select选项构建html的过程.

话虽如此,你有几种方法可以解决它:

第一:您可以创建自己的表单宏.这是过度简化的版本

Form::macro('select2',function($name,$list = [],$selected = null,$options = [],$disabled = []) {
    $html = '<select name="' . $name . '"';
    foreach ($options as $attribute => $value) {
        $html .= ' ' . $attribute . '="' . $value . '"';
    }
    $html .= '">';
    foreach ($list as $value => $text) {
        $html .= '<option value="' . $value . '"' .
            ($value == $selected ? ' selected="selected"' : '') .
            (in_array($value,$disabled) ? ' disabled="disabled"' : '') . '>' .
            $text . '</option>';
    }
    $html .= '</select>';
    return $html;
});

你可以在start.php中注册.

鉴于您首先将已经选择的项目的Illuminate Collection转换为一个简单的键组

$selectedAttributeNames = $xmlDocument->masterInformation->masterAttributes;
$disabled = $selectedAttributeNames->toArray();

并且在您的视图中可以使用$attributeNames和$disabled,您可以像这样使用自定义宏

{{ Form::select2('mydropdown',$attributeNames,null,[],$disabled) }}

第二:您可以从您的选项数组中删除(例如使用array_diff_key())已选择的项目,而不是禁用它们:

{{ Form::select('mydropdown2',array_diff_key($attributeNames,$disabled),[]) }}

第三:在您的视图中,您可以吐出需要禁用的已选择属性的JavaScript数组,并使用jQuery或vanilla JS执行其余客户端.

大佬总结

以上是大佬教程为你收集整理的php – 如何在Laravel中设置禁用选择选项?全部内容,希望文章能够帮你解决php – 如何在Laravel中设置禁用选择选项?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: