Laravel 4 项目中的输入错误

问题描述 投票:0回答:3

我是 Laravel 和 php 的新手,缺乏经验。我正在处理一个已经构建的项目,并且在 “SeminarController” 中存在无法修复的错误,这里是代码:

                if(Input::has('relative_link_titles')){
                $rldesc = Input::get('relative_link_titles');
                $rllinks = Input::get('relative_link_urls');
                $array = array_combine($rldesc,$rllinks);

                while($ar = current($array)){
                    $val = Relative_PackageLinks::where('relpl_desc',key($array))->get();
                    if(empty($val[0])){
                        $newlink = new Relative_PackageLinks();
                        $newlink->relpl_desc = key($array);
                        $newlink->relpl_packageid = $id;
                        $newlink->relpl_link = current($array);
                        $newlink->save();
                    }
                    next($array);
                }

                $result = Relative_PackageLinks::whereNotIn('relpl_desc',$rldesc)->delete();
            } else {
                Relative_PackageLinks::where('relpl_packageid',$id)->delete();
            }`

当我按下保存时,如果输入 'relative_link_titles' 具有相同的名称,它会清理所有表格,我不明白为什么,所以任何有 php 和 laravel 经验的人都会为回答这个问题提供很多帮助。谢谢大家!

php laravel controller laravel-4
3个回答
0
投票

从 Input::get() 返回的数组将是索引数组而不是关联数组。因此,当您执行

key($array)
时,它会传递 0、1、2 等,而不是输入的文本

此外,使用

while
会使情况变得混乱;更好用
foreach

尝试一下这个,尽管如果没有对每个字段中保存的内容进行一些解释,很难确切地知道您要做什么。

$rldesc = Input::get('relative_link_titles');
$rllinks = Input::get('relative_link_urls');
$array = array_merge($rldesc, $rllinks);

foreach($array as $value) {
   $val = Relative_PackageLinks::where('relpl_desc', $value)->first();

   if(!$val) {
      $newlink = new Relative_PackageLinks();
      $newlink->relpl_desc = $value;
      $newlink->relpl_packageid = $id;
      $newlink->relpl_link = $value;
      $newlink->save();
}

$result = Relative_PackageLinks::whereNotIn('relpl_desc',$rldesc)->delete();

0
投票

这里是视图刀片,我也希望为我的项目中的每个研讨会提供这些输入,事实是,使用保存上面的代码,不要让相同的“描述链接”输入或删除所有表格(相关链接)

<table id="relative-links-output" class="table table-striped table-hover">
            @foreach($relative_links as $rl)
            <tr>
                <td>{{ $rl->relpl_desc }}</td>
                <td>{{ $rl->relpl_link }}</td>
                <td class='col-md-1'><a href='#' class='remove-relative-link btn btn-danger'><i class='fa fa-minus'></i></a></td>
                <input type="hidden" name="relative_link_titles[]" value="{{ $rl->relpl_desc }}">
                <input type="hidden" name="relative_link_urls[]" value="{{ $rl->relpl_link }}">
            </tr>
            @endforeach
        </table>

0
投票

我做到了,这很简单,我只需将

where('relpl_packageid',$id)->
添加到 $result 和 $val,这样 while 循环每次都会检查特定的 $id

© www.soinside.com 2019 - 2024. All rights reserved.