我有一个Laravel PHP照片库应用程序,允许用户创建一个相册,然后从下拉列表中将照片插入到他们选择的相册中。这要求用户首先创建专辑,因为下拉列表是动态的,基于哪些专辑实际存在。下拉列表当前正常运行,但不按字母顺序显示专辑(数组元素)。
我尝试过使用'sort()'方法,但问题是数组元素id在这样做时会被切换/重新排序。我不希望对数组ID进行重新排序,因为这会将照片放入错误的相册中。
所以我想知道是否有办法在下拉列表中按字母顺序显示相册,而不是重新排序其数组元素ID。
控制器:
public function create()
{
$stoneArray = $this->stone->all()->toArray();
if (empty($stoneArray)) {
$dropdown[0] = 'There are no stones';
}
foreach ($stoneArray as $stone) {
$dropdown[$stone['stone_id']] = $stone['stone_name'];
// sort($dropdown); /* This re-sorted the array element ids */
}
$data = array('type' => 'stone_photo', 'dropdown' => $dropdown);
$this->layout->content = \View::make('forms.stones.new-photo', $data);
}
查看:
<div class="form-group">
{{ Form::label('stone_id', 'Stone: ') }}
{{ Form::select('stone_id', $dropdown, array('class' => 'form-control')) }}
</div>
非常感谢任何帮助!谢谢!
答案 0 :(得分:1)
修改
我在这里对你的文件结构做了一些假设,但它应该给你一个想法。
在:app\Acme\repositories\Eloquent\EloquentStoneRepository.php
或你所谓的任何内容中,都有一个功能:
public function all()
{
return Stone::all();
}
(我认为这看起来像什么,但我并不积极)。尝试将其更改为:
public function all()
{
return Stone::orderBy('column_name', 'asc')->get();
}
如果您在其他地方使用all()
并且不希望它排序,请考虑添加其他功能:
public function all_sorted()
{
return Stone::orderBy('column_name', 'asc')->get();
}
希望有所帮助!
编辑:
将->all()
更改为->get()
,以便雄辩可以对其进行正确排序。