Php Laravel 5控制器返回值未按我的要求工作

Php Laravel 5控制器返回值未按我的要求工作,php,laravel,laravel-5,view,controller,Php,Laravel,Laravel 5,View,Controller,我刚接触过Laravel5.4。我开发了这样的搜索代码控制器 public function search_code(Request $request){ $query = $request->search; $queryType = $request->institute; // 'id' or 'name' $items = DB::table('registerdetails'); if($queryTyp

我刚接触过Laravel5.4。我开发了这样的搜索代码控制器

public function search_code(Request $request){
    $query      = $request->search;
    $queryType  = $request->institute; // 'id' or 'name'
    $items      = DB::table('registerdetails');        

    if($queryType == 'id'){
        $items = $items->where('trainee_id', 'LIKE',"%$query%");
    }
    if($queryType == 'full_name'){
        $items = $items->where('full_name', 'LIKE',"%$query%");
    }
    $items = $items->get();
    return view('traineeattendance.index')->with('items',$items);
}
我需要的是$item需要在两个不同的视图中从这个控制器调用,就像

return view('traineeattendance.index')->with('items',$items);

我该怎么做呢?

使用类似view::share'variable\u name'、'variable\u value'这样的东西

你的情况:

转到启动时的AppServiceProvider方法添加行: *别忘了导入这些类

然后添加引导时的行方法:

View::share('items', search_code());
这将从方法search_代码中获取返回值,并将其作为$items提供给所有视图

如下所示:转到App-Providers-AppServiceProvider上的AppServiceProviders.php,添加以下启动时方法,包括顶部的名称空间

 use Illuminate\Support\Facades\View;
 use  App\Http\Controllers\YourController;

  public  function boot()
        {
            $controller = new YourController;

            View::share('items', $controller->search_code());
        }

首先,停止在MVC框架中使用DB facade,除非它是非常复杂的查询。 而是创建一个模型

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class RegisterDetails extends Model
{
    protected $table        = 'registerdetails';
    /* Look into documentation for rest of the fields */
}
然后,搜索并创建模型范围所需的所有内容

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class RegisterDetails extends Model
{
    protected $table        = 'registerdetails';

    public static function scopeTrainee($query, $input)
    {
        if(!empty($input)) {
            $query->where("trainee_id", $input);
        }
    }

    public static function scopeFullname($query, $input)
    {
        if(!empty($input)) {
            $query->where("full_name", 'LIKE', $input);
        }
    }
}
简化控制器的代码

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\RegisterDetails;

class RegisterDetailsController extends Controller
{   
    public $data = [];

    public function search_code(Request $request){
        if($request->institute == 'id'){
            $this->data['items'] = RegisterDetails::Trainee($request->search)->get();
        }
        if($request->institute == 'full_name'){
            $this->data['items'] = RegisterDetails::FullName($request->search)->get();
        }
        return view('traineeattendance.index', $this->data);
    }
}
现在,“索引”视图中有项目数据,如果您在“索引”视图中使用“考勤”视图,则也可以访问这些数据


如果索引和出勤率都是不同的视图,一个视图没有被另一个视图包含,那么您在设计层面上做了一些错误的事情,您需要进一步解释这个案例,你能给我添加必要的代码样本吗?非常感谢。我读过,但我不理解,希望是laravel的新版本。你能帮我吗?没有按照我的要求工作,因为它不是按照你想要的方式制作的。你不能从一个方法返回两个视图。与其试图强迫事情按照你的方式进行,不如强迫自己按照工具的方式进行工作。让你的生活更轻松,先生,你能用代码再解释一下吗?因为我不明白你在说什么,如果我知道这不会是一个好消息problem@LKelmendi如何将其应用到我的搜索代码控制器中?如果确实需要,请使用View::share,用它来做2分钟的运动真是太过分了views@BartłomiejSobieszek好吧那就给我们展示一个更好的way@Thoms如何将其应用到我的搜索代码控制器中?meI给出了一个示例,如果仍然不清楚我是否感到震惊,您应该先阅读文档,自己制作一个小演示,然后再试一次。祝你好运!莫名其妙的否决票是你们在这个社区能感受到的最好的东西
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class RegisterDetails extends Model
{
    protected $table        = 'registerdetails';

    public static function scopeTrainee($query, $input)
    {
        if(!empty($input)) {
            $query->where("trainee_id", $input);
        }
    }

    public static function scopeFullname($query, $input)
    {
        if(!empty($input)) {
            $query->where("full_name", 'LIKE', $input);
        }
    }
}
namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\RegisterDetails;

class RegisterDetailsController extends Controller
{   
    public $data = [];

    public function search_code(Request $request){
        if($request->institute == 'id'){
            $this->data['items'] = RegisterDetails::Trainee($request->search)->get();
        }
        if($request->institute == 'full_name'){
            $this->data['items'] = RegisterDetails::FullName($request->search)->get();
        }
        return view('traineeattendance.index', $this->data);
    }
}