【发布时间】:2015-07-28 14:35:36
【问题描述】:
我已经构建了一个简单的后端结构,其中包含创建、编辑、更新、查看,就像您通常使用 mvc 和 laravel 进行设置一样。我正在使用的软件包是:
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"illuminate/html": "5.*",
"codesleeve/laravel-stapler": "dev-master",
"intervention/image": "^2.3",
"dingo/api": "0.9.*"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1",
"laracasts/generators": "^1.1",
"way/generators": "~3.0"
},
它在向表单添加数据和更新时起作用。数据结构如下:
"id": 1,
"name": "new offer",
"address": "test address",
"description": "test",
"offer_headline": "ccdd",
"offer_subheader": "hhhghhg",
"offer_terms": "test",
"map_location": "14,57",
"image": "/home/vagrant/projects/scoff/scoff-api/storage/app/uploads/2015-07-28-14:16:10-Screen Shot 2014-09-11 at 10.26.15.png",
"phone_number": "**************",
"website": "www.****.uk",
"created_at": "2015-07-28 14:16:10",
"updated_at": "2015-07-28 14:16:10",
"is_featured": false
执行此操作的控制器以非常简单的方式使用 store 方法进行设置,如下所示。我的图像上传由 laravel 文件系统中的 Store 处理,我使用图像干预来调整图像大小。如您所见,图像已保存到数据库中,数据库中的 url 是这样的:/home/vagrant/projects/scoff/scoff-api/storage/app/uploads/ 问题是当我去查找器查找文件时,它不存在或没有被移动。我的控制器在下面:
我已经在相关部分留下了这个
<?php
namespace App\Http\Controllers;
use App\Offer;
use Validator;
use App\Http\Requests;
use Illuminate\Support\Facades\Input;
use App\Http\Controllers\Controller;
use App\Http\Controllers\OfferTransformer;
use Redirect;
use Image;
use DB;
use Request;
use Storage;
use File;
class OffersController extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
/**
* Return all api methods here
**/
public function apiIndex()
{
//
$this->middleware('auth');
return Offer::all();
}
public function apiShow($id)
{
$offer = Offer::findOrFail($id);
return $this->response->array($offer->toArray());
}
public function index()
{
$this->middleware('auth');
$offers = Offer::all();
return view('offers.index', compact('offers'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create(Offer $offer)
{
$this->middleware('auth');
return view('offers.create', compact('offer'));
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return Response
*/
public function store(Offer $offer)
{
$data = Input::except('image');
$validation = Validator::make($data, Offer::$rules);
if ($validation->fails()) {
return redirect('offers')->with('message', $validation->errors());
} else {
$file = Input::file('image');
$filename = date('Y-m-d-H:i:s')."-".$file->getClientOriginalName();
Image::make($file->getRealPath())->resize(600, 600)->save(storage_path('app/uploads/').$filename);
// //$file = $file->move(public_path().'/images/offers/', time() . '-' . $file->getClientOriginalName());
// // GET THE FILE EXTENSION
$data['image'] = storage_path('app/uploads/').$filename;
Offer::create( $data );
return redirect('offers')->with('message', 'Offer added!');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
//dd($offer->exists);
$offer = Offer::findOrFail($id);
return view('offers.show', compact('offer'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit(Offer $offer, $id)
{
//
$this->middleware('auth');
$offer = Offer::findOrFail($id);
return view('offers.edit', compact('offer'));
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function update(Offer $offer, $id)
{
$offer = Offer::findOrFail($id);
$input = array_except(Input::all(), array('_token','_method','image') );
$file = Input::file('image');
$filename = date('Y-m-d-H:i:s')."-".$file->getClientOriginalName();
Image::make($file->getRealPath())->resize(600, 600)->save(public_path().'/images/offers/'.$filename);
// //$file = $file->move(public_path().'/images/offers/', time() . '-' . $file->getClientOriginalName());
// // GET THE FILE EXTENSION
$input['image'] = public_path().'/images/offers/'.$filename;
$offer->update($input);
return Redirect::route('offers.show',$offer->id)->with('message', 'Offer updated.');
}
}
谁能明白为什么会发生这种情况?是不是被移到了正确的地方?
【问题讨论】:
-
一个疯狂的猜测,但这个名字在检索时可能很难解析。
-
你认为我应该在一开始就取消日期吗?
-
调试它,尝试一个非常简单的名字
-
..别忘了路由...
-
那个MSG路由?我认为不需要它?
标签: php laravel model-view-controller laravel-5