使用 laravel 和刀片正确分配带有 route(function) 和参数的 img src
Posted
技术标签:
【中文标题】使用 laravel 和刀片正确分配带有 route(function) 和参数的 img src【英文标题】:Properly assign img src with route(function) and parameters using laravel and blade使用 laravel 和刀片正确分配带有 route(function) 和参数的 img src 【发布时间】:2017-11-05 12:56:52 【问题描述】:我在使用 laravel 时遇到了一个问题,我正在尝试调用一个函数并使用 route 方法传递一些参数,这里是这样的:
<img src="route('cacheImage', ['general', 'mini-logo.png']) " />
我的 web.php 文件中的路由如下所示:
Route::get('/cache/images', ['uses'=>'HomeController@cache_image','as'=>'cacheImage']);
因此,当页面加载到我的 img src 中时,我会在这里得到类似的东西:
http://localhost:8000/cache/images?general&mini-logo.png
但这不是我想要的,我想要的是在我的 img src 中包含这些内容:
http://localhost:8000/cache/images/general/mini-logo.png
同时我想在我的控制器中调用cacheImage函数并传递给它两个参数,分别是“general”和“mini-logo.png”
我如何实现这一目标?谁能给我一个例子?
【问题讨论】:
如果你有它,比如说,像这样的东西:/cache/images/arg1]/arg2
,那么它是可能的。但是你这样做的方式,它是一个获取请求。如果你总是有至少 2 个参数,那么是的,这是可能的。
好吧,我实际上可能有多个文件夹和子文件夹,我如何能够在一条获取路径中解决所有这些问题?比如 cache/images/folder1/folder2/image 然后是 cache/images/folder1/image 甚至是 cache/images/image??
您可以将几个动态参数传递给它,但这会变得混乱。相反,我认为最好只使用get
参数。这是最有意义的。一点问题都没有。
好的,你会说当我需要遵循不同的文件夹结构时,我应该创建几个具有不同参数的 get 路由?
【参考方案1】:
改变你的路线到这里。
Route::get('/cache/images/type/name', [
'uses' => 'HomeController@cache_image',
'as' => 'cacheImage'
]);
对此的控制器方法能够接收 url 段作为参数。
public function cache_image($type, $name)
dd($type, $name);
然后你可以像这样生成链接。
$link = route('cacheImage', ['general', 'mini-logo.png']);
// generates http://example.dev/cache/images/general/mini-logo.png
【讨论】:
这很好用,如何通过一次获取请求更灵活地获取该图像路径中的所有文件夹和子文件夹? 虽然有一件事,当我尝试像这样访问路由时:localhost:8000/images/general/mini-logo.png,它根本不会在控制器中调用我的 imageCache 函数,尽管它是在我的 get 请求中指定的,这是为什么?它只是返回图像。似乎只是从图像文件夹中请求资源,但没有考虑我的获取路线,这是为什么呢?是因为 public/image 是资源的标准文件夹吗?我在这里做错了什么? @Benny 您可以在您的路由中将/cache/images/type/name
替换为'/cache/images/any
,然后在您的控制器中您可以访问所有的url 段。对于第二个问题,您不能在公共目录中创建与文件夹同名的路由。因此,如果您有 public/images
文件夹,那么到 /images
的路由将不起作用,因为 laravel 将路由视为资源路由。
这听起来很有趣,在这个例子中我如何能够获取例如三个参数? '缓存/图像/any ??控制器的外观如何?我需要在这里使用请求对象吗?如何使用 cache/images/any 路由获取所有三个参数?以上是关于使用 laravel 和刀片正确分配带有 route(function) 和参数的 img src的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8:为啥登录刀片不显示 Javascript 警报 [关闭]
如何使用 vuejs 在 laravel 刀片中显示验证错误
Laravel 4 控制器模板/刀片 - 正确的方法? [关闭]
laravel-excel 无法使用带有图像的刀片导出 xls 文件