仅在laravel 5中进行编辑时,才在表单模型绑定中添加readonly属性

时间:2015-06-09 13:23:12

标签: php jquery html5 laravel laravel-5

我有2个表单可供编辑和插入我的项目,我正在使用表单模型绑定。

在插入过程中,需要一个名为code的字段。此代码与产品的image相关联。所以我希望在编辑过程中,code字段应该变为readOnly

我如何实现这一目标?

插入

{!! Form::open(['url' => '/admin/products', 'autocomplete' => 'off', 'id' => 'formAddProduct', 'files' => true, 'name' => 'formAddProduct']) !!}
    <div class="errors"></div>

    @include('admin.products.form', ['submitButtonText' => 'Add Product', 'submitButtonId' => 'btnAddProduct'])

{!! Form::close() !!}

编辑

{!! Form::model($product, ['method' => 'PATCH', 'action' => ['AdminProductsController@update', $product->id], 'autocomplete' => 'off', 'id' => 'formEditProduct', 'files' => true]) !!}
    <div class="errors"></div>

    @include('admin.products.form', ['submitButtonText' => 'Edit Product', 'submitButtonId' => 'btnEditProduct'])
{!! Form::close() !!}

form.blade.php

<div class="form-group">
    {!! Form::label('code', 'Code') !!}
    {!! Form::text('code', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('name', 'Name:') !!}
    {!! Form::text('name', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('category_id', 'Category:') !!}
    {!! Form::select('category_id', $categories, null, ['class' => 'form-control']) !!}
</div>

3 个答案:

答案 0 :(得分:2)

在编辑视图中包含表单时,您可以按如下方式传递另一个参数:

<强>编辑:

{!! Form::model($product, ['method' => 'PATCH', 'action' => ['AdminProductsController@update', $product->id], 'autocomplete' => 'off', 'id' => 'formEditProduct', 'files' => true]) !!}
    <div class="errors"></div>
    @include('admin.products.form', ['submitButtonText' => 'Edit Product', 'submitButtonId' => 'btnEditProduct', 'editMode' => true])
{!! Form::close() !!}

然后在包含的表格中,您可以检查此参数并相应地渲染输入字段,

<强> form.blade.php

    <div class="form-group">
        {!! Form::label('code', 'Code') !!}
    @if(isset($editMode))
        {!! Form::text('code', null, ['class' => 'form-control', 'readonly' => true]) !!}
    @else
        {!! Form::text('code', null, ['class' => 'form-control']) !!}
    </div>

这样,如果编辑,则输入字段为readOnly,否则为可写。

答案 1 :(得分:1)

您可以通过传递参数或手动禁用编辑视图中的输入字段来实现此目的:

{!! Form::text('code', null, ['class' => 'form-control', 'disabled' => 'true']) !!}

答案 2 :(得分:0)

而不是重复许多元素。 在控制器上

$readonly = [];

if($edit)
 $readonly = ['readonly' => true];

在视图

{!! Form::text('code', null, (['class' => 'form-control'] + $readonly)) !!}