如何在 Laravel 控制器中使用 if 语句来请求表单值

How do I use if statement in a Laravel Controller to request a form value

我搜索了类似的问题,但 none 似乎符合我打算做的事情。我有一个带有隐藏部分的表单,只有在选择一个选项时才会显示。我不希望我的控制器担心这个隐藏部分的值,如果它是隐藏的(意味着没有用户输入,因为用户没有看到它)。但是如果有输入,那么控制器应该处理请求值。下面是代码

<form class="form-horizontal" role="form" method="POST" action="/employees">
{{ csrf_field() }}

<div class="panel-title">Employee Details</div><br>

<div class="form-group">
    <label for="firstname" class="col-md-4 control-label">Firstname</label>

    <div class="col-md-6">
        <input id="firstname" type="text" class="form-control" name="firstname" value="{{ old('firstname') }}" required autofocus>
    </div>
</div>

<div class="form-group>
    <label for="lastname" class="col-md-4 control-label">Lastname</label>

    <div class="col-md-6">
        <input id="lastname" type="text" class="form-control" name="lastname" value="{{ old('lastname') }}" required autofocus>
    </div>
</div>

<div class="form-group}">
    <label for="department" class="col-md-4 control-label">Department</label>

    <div class="col-md-6">
        <select name="department"  id="dept" class="form-control" required autofocus>
            <option class="text-muted">-- Select Department --</option>
            <option value="administration">Adminstration</option>
            <option value="worker">Worker</option>
        </select>
    </div>
</div>


<div class="col-md-12" id="teacred">
    <div class="panel-title">Create Teacher Authentication</div><br>

    <div class="form-group">
        <label for="username" class="col-md-4 control-label">Username</label>

        <div class="col-md-6">
            <input id="username" type="username" class="form-control" name="username" value="{{ old('username') }}">
        </div>
    </div>

    <div class="form-group">
        <label for="password" class="col-md-4 control-label">Password</label>

        <div class="col-md-6">
            <input id="password" type="password" class="form-control" name="password">
        </div>
    </div>

    <div class="form-group">
        <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>

        <div class="col-md-6">
            <input id="password-confirm" type="password" class="form-control" name="password_confirmation">
        </div>
    </div>
</div>

<div class="form-group">
    <div class="col-md-6 col-md-offset-4">
        <button type="submit" class="btn btn-primary">
            Save
        </button>
    </div>
</div>

public function store(Request $request)
{
    $emp = new Employee;

    $emp->firstname = request('firstname');
    $emp->lastname = request('lastname');
    $emp->department = request('department');

    $emp->save();

    if ($emp->department != 'administration') {

        $user = new User;

        $user->firstname = request('firstname');
        $user->lastname = request('lastname');
        $user->role = 'worker';
        $user->username = request('username');
        $user->password = bcrypt(request('password'));

        $user->save();

        $job = new Job;

        $job->firstname = request('firstname');
        $job->lastname = request('lastname');
        $job->subject = request('department');

        $job->save();

    } 

    return redirect('/employees');

}

不幸的是我的代码不起作用,从 google chrome 网络开发工具控制台返回的错误是

An invalid form control with name='username' is not focusable.

但是我没有设置该属性,您可以从表单中看到。我如何让它发挥作用?

在你的表单中;类型应该是 text 而不是 username

<input id="username" type="username" class="form-control" name="username" value="{{ old('username') }}">