Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel中的随机图像_Php_Laravel_Laravel 5_Laravel 5.5 - Fatal编程技术网

Php laravel中的随机图像

Php laravel中的随机图像,php,laravel,laravel-5,laravel-5.5,Php,Laravel,Laravel 5,Laravel 5.5,我有一个名为random_img的数据库表。里面有10行10幅图像 我将从公共/图像/随机中提取图像 我想使用数据库,这样我就可以将循环设置为Random take(1)。我想在我的英雄形象中使用。(每页刷新时都有新图像) 我将把数据库查询放在哪里,以便全局使用它?或者如何使用我的随机imgscontroller,使其在全球范围内使用 我创建了一个路由文件,因此可以在需要时将其用作include 路线: Route::post('/layouts/inc/random-img','RandomI

我有一个名为random_img的数据库表。里面有10行10幅图像

我将从公共/图像/随机中提取图像

我想使用数据库,这样我就可以将循环设置为Random take(1)。我想在我的英雄形象中使用。(每页刷新时都有新图像)

我将把数据库查询放在哪里,以便全局使用它?或者如何使用我的
随机imgscontroller
,使其在全球范围内使用

我创建了一个路由文件,因此可以在需要时将其用作include

路线:

Route::post('/layouts/inc/random-img','RandomImgsController@randomimg')->name('random-img');
@include('layouts.inc.random-img')
  @foreach ($randomimg as $rand)
  <span class="hero-image">
            <img src="/images/random/{{$rand->file_name}}" class="img--max--hero blur-img">
            </span>
@endforeach
包括:

Route::post('/layouts/inc/random-img','RandomImgsController@randomimg')->name('random-img');
@include('layouts.inc.random-img')
  @foreach ($randomimg as $rand)
  <span class="hero-image">
            <img src="/images/random/{{$rand->file_name}}" class="img--max--hero blur-img">
            </span>
@endforeach
内部包含:

Route::post('/layouts/inc/random-img','RandomImgsController@randomimg')->name('random-img');
@include('layouts.inc.random-img')
  @foreach ($randomimg as $rand)
  <span class="hero-image">
            <img src="/images/random/{{$rand->file_name}}" class="img--max--hero blur-img">
            </span>
@endforeach
这就是我希望在网站的每个页面上实现的目标:

@php
$randomimg = DB::table('randomimg')->orderBy(DB::raw('RAND()'))->get()->take(1);    
@endphp
  @foreach ($randomimg as $rand)
  <span class="hero-image">
            <img src="/images/random/{{$rand->file_name}}" class="img--max--hero blur-img">
            </span>
@endforeach
在任何视图中,我都可以使用
{{$foo}}
从图像表中获取一个随机行,但数据以如下字符串形式出现:

<span class="hero-image">
    <img 
        src="{{ $image->url() }}" 
        class="img--max--hero blur-img" />
</span>
Route::get('/', function () {
    $image = App\Image::random();
    return view('home', compact('image');
});
public function compose(View $view)
{
    $view->with('image', Image::random());
}
[{“id”:10,“alt”:“Image alt Tag”,“title”:“Image title”,“file_name”:“10.jpg”}]

当我试图只抓取像这样的单个列时,
{{$foo->file_name}

我得到一个错误:

此集合实例上不存在属性[文件名]

我如何获取这样的单个列:
{{{$foo->alt}}
{{$foo->title}
{{$foo->file_name}
然后在我的视图中干净地输出它们?例如,我需要
{{$foo->file_name}
这样渲染:
5.jpg

更新2: 我想出来了。必须使用
@foreach
,因为我使用的是
get()
方法

@foreach($foo as $f)
{{$f->file_name}}
@endforeach

我仍然想知道是否有一种方法可以不用get()方法来实现它。不过,这会起作用。

首先,您不能在刀片模板中包含路由。实际上,您要做的是将一个AJAX请求从您的刀片模板发送到您创建的用于检索随机图像的路由。然而

在这种情况下,控制器似乎是错误的逻辑位置

假设您的表有一个关联的雄辩模型,一个简单的选项是在
RandomImage
模型上定义一个方法(可能只是称为
Image

这样,您只需使用
图像
模型生成随机图像并将其传递给您想要的任何视图。然后也不需要查询每个页面上的每个图像。每个请求只能查询一个图像

想象一下,如果视图中的代码可以如下所示:

<span class="hero-image">
    <img 
        src="{{ $image->url() }}" 
        class="img--max--hero blur-img" />
</span>
Route::get('/', function () {
    $image = App\Image::random();
    return view('home', compact('image');
});
public function compose(View $view)
{
    $view->with('image', Image::random());
}
您可以使用
图像上的查询范围
模型来实现这一点:

public function scopeRandom($query)
{
    return $query->inRandomOrder()->first();
}
编辑

如果您希望在网站中的多个甚至所有视图中使用此功能,可以使用视图生成器:

您的撰写方法如下所示:

<span class="hero-image">
    <img 
        src="{{ $image->url() }}" 
        class="img--max--hero blur-img" />
</span>
Route::get('/', function () {
    $image = App\Image::random();
    return view('home', compact('image');
});
public function compose(View $view)
{
    $view->with('image', Image::random());
}
视图生成器将在您的
AppServiceProvider
中注册,或在新的提供商(如
Composer-ServiceProvider
)中注册。在所需的
引导方法内部:

public function boot()
{
    // Using class based composers...
    View::composer(
        '*', 'App\Http\ViewComposers\ImageComposer'
    );
}

其中,
*
表示您希望将此编写器应用于所有视图。

我喜欢您的逻辑,但我希望在我的网站的每个页面上使用随机图像。在你展示的内容中,我将如何实现这一点?我更新了我的问题,我以前是如何在普通php中完成的。我明白你现在的要求了。我更新了我的答案。我越来越接近于弄明白它,但在一个问题上卡住了。请参见我的问题的
更新
。谢谢我想出来了。我必须使用
@foreach
,因为我使用的是
get()
@echo,对此我深表歉意。那是我的错误。如果只需要一个随机图像,可以调用
image::random()