我正在使用Codesleeve Stapler
,我遇到了一个小问题。
我完成了本页描述的最后一个示例: https://github.com/CodeSleeve/stapler
不同之处在于我的新模型名为Pictures而不是ProfilePictures
我的模型不是User
而是Trip
。
<img src="<?= asset($picture->photo->url('thumbnail')) ?>">
在视图上显示已上传的最后一张图片。
我想显示属于每个Picture
的{{1}}。我怎么能这样做?
感谢。
答案 0 :(得分:5)
所以,你有两种模式:&#39;旅行&#39;和#39;图片&#39;在您的旅行模型中,您需要定义一个'hasMany&#39;与图片模型的关系:
public function pictures(){
return $this->hasMany('Picture');
}
然后,在您的图片模型中,您定义订书钉附件:
// Be sure and use the stapler trait, this will not work if you don't:
use Codesleeve\Stapler\Stapler;
// In your model's constructor function, define your attachment:
public function __construct(array $attributes = array()) {
// Pictures have an attached file (we'll call it image, but you can name it whatever you like).
$this->hasAttachedFile('image', [
'styles' => [
'thumbnail' => '100x100#',
'foo' => '75x75',
'bar' => '50x50'
]
]);
parent::__construct($attributes);
}
现在您已经在Picture模型上定义了附件,每次访问Picture对象时,您都可以访问文件附件。假设你有旅行记录,你可以这样做:
<?php foreach ($trip->pictures as $picture): ?>
<img src="<?= asset($picture->image->url('thumbnail')) ?>">
<?php endforeach ?>
您可以像这样访问原始图片:
<img src="<?= asset($picture->image->url()) ?>">
// or
<img src="<?= asset($picture->image->url('original')) ?>">
实际上,您可以访问您定义的任何样式:
<img src="<?= asset($picture->image->url('foo')) ?>">
<img src="<?= asset($picture->image->url('bar')) ?>">
希望这有帮助。