用户编辑资源不起作用

Posted

技术标签:

【中文标题】用户编辑资源不起作用【英文标题】:User Edit Resource not working 【发布时间】:2016-07-28 11:00:41 【问题描述】:

我在users 表中链接了一个用户资源。

我的路线:

Route::resource('user', 'UserController');

用户控制器.php

public function edit($id)

    $user = User::find($id);
    return view('user.edit')->with(array('user'=>$user));


public function update(Request $request, $id)

    $rules = array(
        'name' => 'required',
    );

    $validator = Validator::make(Input::all(), $rules);
    if ($validator->fails())
    
        return Redirect::to('user/'.$id.'/edit')->withInput()->withErrors($validator);
    

我的观点

!! Form::model($user, array('route' => array('user.update', $user->id), 'method' => 'PUT', 'class' => 'form-horizontal')) !!
    @if (count($errors) > 0)
    <div class="alert alert-danger">
            <strong>Whoops!</strong> There were some problems with your input.<br><br>
            <ul>
                @foreach ($errors->all() as $error)
                    <li> $error </li>
                @endforeach
            </ul>
        </div>
    @endif

    <div class="flash-message">
        @foreach (['danger', 'warning', 'success', 'info'] as $msg)
          @if(Session::has('alert-' . $msg))
          <p class="alert alert- $msg "> Session::get('alert-' . $msg) </p>
          @endif
        @endforeach
    </div>

    <div class="form-group"><label class="col-sm-2 control-label">Name</label>
        <div class="col-sm-10"><input type="text" name="name" id="name" value="$user->name" class="form-control"></div>
    </div>

    <div class="form-group"><label class="col-sm-2 control-label">ID Number</label>
        <div class="col-sm-10"><input type="text" name="id_number" id="id_number" value="$user->id_number" class="form-control"></div>
    </div>

    <div class="hr-line-dashed"></div>
    <div class="form-group">
        <div class="col-sm-4 col-sm-offset-2">
            <button class="btn btn-primary" type="submit">Save changes</button>
        </div>
    </div>
!! Form::close() !!

因此,通过此设置,我希望当单击我页面上的提交按钮时,它会像我的其他资源一样进入update() 函数。但问题是当我点击提交时,它会引导我到

http://localhost/hrs/public/user/1

和一个没有错误的白色空白页。所以这意味着它会转到我的update 函数?我的其他资源遵循相同的模式,这是唯一一个不工作的。

【问题讨论】:

也许您只是没有收到验证错误?该网址是update 方法的正确路径,所以我认为一切正常。尝试将 dd('here') 放入您的 update 方法中。我打赌你会看到here :) @GiedriusKiršys 感谢您的建议。我终于知道怎么回事了。哈哈,请求在验证器失败后进行。因为我没有其他部分,所以它什么都不做哈哈 【参考方案1】:

发现了问题,我没有else 部分的验证。因为那是活动的目的地。因为我没有它,它什么也做不了。

    $validator = Validator::make(Input::all(), $rules);
    if ($validator->fails())
    
        return Redirect::to('user/'.$id.'/edit')->withInput()->withErrors($validator);
    
    else
    
        dd($rules);
    

【讨论】:

【参考方案2】:

您的网络服务器配置错误。您应该将您的 Web 服务器(通常是 Apache 或 nginx)指向您的 Laravel 项目的 public 目录。之后重启网络服务器。

例如对于 Apache,正确的配置是这样的:

DocumentRoot "C:/xampp/htdocs/hrs/public"
<Directory "C:/xampp/htdocs/hrs/public">

【讨论】:

嗨。感谢您的帮助,但我的公共目录没有任何问题,因为我能够登录系统和一切。问题是更新方法,但我现在修复了它 当 Laravel 构建带有 public 的 url 时,这意味着你有错误的配置。如果你不解决这个问题,你会发现很多类似的错误。 如果我在 url 中有 public 就可以了,因为我处于开发阶段,我正在删除生产中的 public。我了解使用虚拟主机。无论如何,我的问题只是我忘记添加代码的“其他”部分,与 URL 或 Direcotry 无关:)

以上是关于用户编辑资源不起作用的主要内容,如果未能解决你的问题,请参考以下文章

hidesBackButton / setHidesBackButton 不起作用

变量在 GSP 标签中不起作用,但在普通文本中起作用

MFC 在控件上显示图片不起作用

Android列表视图setOnItemClickListener不起作用

ASP.NET 身份检查用户角色不起作用

iOS Coredata 回滚不起作用