作者:llllllw_wlllllll | 来源:互联网 | 2023-08-31 20:39
我正在关注本教程https://www.youtube.com/watch?v=6Oxfb_HNY0U
建立一个小的流明测试项目。
我目前在第27分钟,您应该通过发帖请求插入一条记录。
为此,我正在使用RESTClient http://restclient.net/
所以,在最后一天,我已经尽力解决了这个问题,而且由于这样,我也至少可以
部分解决问题:
What does the second paremeter in "json()" do (Lumen/Laravel)?
但是,我仍然收到错误而不是新记录。
向...发送帖子请求时
http://localhost:8080/api/articles
我收到此错误:
(1/1) BadMethodCallException
Method Laravel\Lumen\Http\Request::validate does not exist.
in Macroable.php line 103
at Request->__call('validate',array(array('title' => 'required','description' => 'required')))in ArticleController.php line 36
at ArticleController->create(object(Request))
at call_user_func_array(array(object(ArticleController),'create'),array(object(Request)))in BoundMethod.php line 32
at BoundMethod::Illuminate\Container\{closure}()in Util.php line 34
at Util::unwrapIfClosure(object(Closure))in BoundMethod.php line 90
at BoundMethod::callBoundMethod(object(Application),array(object(ArticleController),object(Closure))in BoundMethod.php line 34
at BoundMethod::call(object(Application),array(),null)in Container.php line 590
at Container->call(array(object(ArticleController),array())in RoutesRequests.php line 376
at Application->callControllerCallable(array(object(ArticleController),array())in RoutesRequests.php line 342
at Application->callLumenController(object(ArticleController),'create',array(true,array('uses' => 'App\\Http\\Controllers\\ArticleController@create'),array()))in RoutesRequests.php line 316
at Application->callControlleraction(array(true,array()))in RoutesRequests.php line 278
at Application->callactionOnArrayBasedRoute(array(true,array()))in RoutesRequests.php line 263
at Application->handleFoundRoute(array(true,array()))in RoutesRequests.php line 165
at Application->Laravel\Lumen\Concerns\{closure}(object(Request))in RoutesRequests.php line 416
at Application->sendThroughPipeline(array(),object(Closure))in RoutesRequests.php line 171
at Application->dispatch(null)in RoutesRequests.php line 108
at Application->run()in index.php line 28
由于我是Lumen / Laravel的新手,所以我很难从该错误中猜测任何东西。
我不知道我是否拼错了什么,没有注意范围或诸如此类。
现在,这是产生此错误的代码:
web.php(路线),Article.php(模型,位于应用程序文件夹中)和ArticleController.php(控制器):
web.php:
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$router->get('/',function () use ($router) {
return $router->app->version();
});
// was simply 'api' in tutorial
$router->group(['prefix' => '/api'],function($router){
$router->get('articles','ArticleController@showAllArticles');
$router->get('articles/{id}','ArticleController@showOneArticle');
$router->post('articles','ArticleController@create');
});
ArticleController.php
namespace App\Http\Controllers;
use App\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
//
public function showAllArticles(){
return response()->json(Article::get(['title','description','status'])); // ::get([]) spezifiziert die zu referenzierenden Attribute
// ::all() referenziert alle Attribute einer Tabelle/Relation
}
public function showOneArticle($id){
return response()->json(Article::find($id));
}
public function create(Request $request){
//dd($request); //for debugging whether the request is actually being processed
$validatedData = $request->validate([
'title' => 'required','description' => 'required',]);
//dd($request); //for debugging whether the specified fields are required
//insert record
$article = Article::create($request->all());
return response()->json($article,201);
}
}
Article.php:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $fillable = [
'title','status'
];
}
由于与教程代码相比修改了此代码中的函数“ create()”(请参阅顶部引用的SO问题中的ege答案),因此我也尝试了教程代码,其中create( )函数如下所示:
public function create(Request $request){
$this->validation($request,[
'title' => 'required','description' => 'required'
]);
$article = Article::create($request->all());
return response()->json($article,201);
}
在这种情况下,我得到另一个错误:
(1/1) Error
Call to undefined method App\Http\Controllers\ArticleController::validation()
in ArticleController.php line 41
at ArticleController->create(object(Request))
at call_user_func_array(array(object(ArticleController),object(Closure))in RoutesRequests.php line 171
at Application->dispatch(null)in RoutesRequests.php line 108
at Application->run()in index.php line 28
与第一个错误相比,我在理解错误方面基本上存在相同的问题。
我在这里查看了流明文档:
https://lumen.laravel.com/docs/6.x/validation
我又想知道我是否不正确地理解范围(“ this”在这里指的是什么,它是什么对象,实际上可以从中调用什么方法?)。
为了完整起见,我用雄辩的模型“ Article”引用的表的屏幕截图:
https://imgur.com/onXEgzg
总的来说,我真是一无所知,如果有人可以“帮我搭便车”,我将非常感激^^
查看修改后的示例(create()
方法的第二版),错误的第一行显示了问题:
调用未定义的方法App \ Http \ Controllers \ ArticleController :: validation()
代码中的这一行有问题:
$this->validation() ...
检查the link to the Lumen docs是否包含:
在流明中可用的$ this-> validate助手...
因此有一个validate()
助手-但是您正在使用validation()
。