Laravel + CodeSleeve订书机捆绑

时间:2014-05-25 19:04:12

标签: php laravel laravel-4

我正在使用Codesleeve Stapler,我遇到了一个小问题。

我完成了本页描述的最后一个示例: https://github.com/CodeSleeve/stapler

不同之处在于我的新模型名为Pictures而不是ProfilePictures 我的模型不是User而是Trip

<img src="<?= asset($picture->photo->url('thumbnail')) ?>"> 在视图上显示已上传的最后一张图片。

我想显示属于每个Picture的{​​{1}}。我怎么能这样做?

感谢。

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')) ?>">

希望这有帮助。