我有以下几行 routes/api.php
Route::middleware('api')->get('/posts', function (Request $request) {
Route::resource('posts','ApiControllers\PostsApiController');
});
Run Code Online (Sandbox Code Playgroud)
当我点击http://localhost:8000/api/posts
它时它会变回空白,但当我将上述路线移动到routes/web.php
这样时:
Route::group(['prefix' => 'api/v1'],function(){
Route::resource('posts','ApiControllers\PostsApiController');
});
Run Code Online (Sandbox Code Playgroud)
有用.
作为提醒我已经清除了路由缓存文件php artisan route:clear
,php artisan route:list
当我routes/web.php
空了并且routes/api.php
具有上述路由时,我的路由列表随附:
+--------+----------+-------------+------+---------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------+------+---------+------------+
| | GET|HEAD | api/posts | | Closure | api |
+--------+----------+-------------+------+---------+------------+
Run Code Online (Sandbox Code Playgroud)
请注意,对于Web路由部分,列表可以正常工作.
我在这做错了什么?
我有一个包含三个对象的数组,每个对象都有直接的键值对。
// Search Input
<div class="dv-header-search">
<input type="text" class="dv-header-input"
placeholder="Search"
v-model="query.search_input">
</div>
//Table row
<tr v-for="row in filteredRow">
<td v-for="(value, key) in row">{{value}}</td>
</tr>
data() {
return {
model: {},
columns: {},
query: {
search_input: ''
},
}
},
// Setting model after API call
.then(function(response) {
Vue.set(vm.$data, 'model', response.data.model)
})
computed: {
filteredRow: function(){
return this.model.data.filter((row) => {
return row;
});
}
}
Run Code Online (Sandbox Code Playgroud)
它给了我以下例外:
类型错误:无法读取未定义的属性“过滤器”
我在这里缺少什么。
我使用graphql-request
GraphQL 客户端来查询无头 CMS 以获取内容、修改并返回原始请求/查询。headless cms 单独托管,仅供参考。
我有以下代码:
@Query(returns => BlogPost)
async test() {
const endpoint = 'https://contentxx.com/api/content/project-dev/graphql'
const graphQLClient = new GraphQLClient(endpoint, {
headers: {
authorization: 'Bearer xxxxxxx',
},
})
const query = gql`
{
findContentContent(id: "9f5dde89-7f9b-4b9c-8669-1f0425b2b55d") {
id
flatData {
body
slug
subtitle
title
}
}
}`
return await graphQLClient.request(query);
}
Run Code Online (Sandbox Code Playgroud)
BlogPost
是一个具有以下类型的模型:
import { Field, ObjectType } from '@nestjs/graphql';
import { BaseModel } from './base.model';
import FlatDateType from '../resolvers/blogPost/types/flatDatatype.type';
@ObjectType()
export class BlogPost extends BaseModel { …
Run Code Online (Sandbox Code Playgroud) 我有两页login.blade.php
和register.blade.php
.在我的login.blade.php
链接上register.blade.php
这样:
<a href="register.php">Register a new membership</a>
Run Code Online (Sandbox Code Playgroud)
当我点击register.php的链接时,它会抛出以下错误:
NotFoundHttpException in RouteCollection.php line 143:
登录和注册都在相同的视图文件夹中.
我的route.php文件有:
Route::get('/register', function(){
return view('register');
});
Run Code Online (Sandbox Code Playgroud) 我通过终端使用命令创建了一个测试:
php artisan make:test UserTest
现在我想使用以下命令运行测试:
vendor/bin/UserTest
但它回来了
bash: vendor/bin/UserTest: No such file or directory
PHPunit已安装.我检查过.
我错过了什么吗?
我有以下代码。我首先上传文件,然后读取文件和console
输出,如console.log(obj)
. 但是响应是第一位的,python 脚本在幕后运行。我怎样才能让代码等待 python 脚本运行然后继续?
router.post(`${basePath}/file`, (req, res) => {
//Upload file first
PythonShell.run('calculations.py', { scriptPath: '/Path/to/python/script' }, function (err) {
console.log(err);
let obj = fs.readFileSync('Path/to/file', 'utf8');
console.log(obj);
});
return res.status(200).send({
message : 'Success',
});
});
Run Code Online (Sandbox Code Playgroud)
我无法获得console.log(obj);
输出,因为它在响应之后运行。我怎样才能让它等待 python 脚本运行并console.log(obj)
在控制台上获得输出。
我有一个注册表单并获取注册表单值routes.php
.我的rout.php
代码是:
Route::get('/', function () {
return view('login');
});
Route::get('/index', function(){
return view('index');
});
Route::get('/register', function(){
return view('register');
});
Route::post('/register',function(){
$user = new \App\User;
$user->username = input::get('username');
$user->email = input::get('email');
$user->password = Hash::make(input::get('username'));
$user->designation = input::get('designation');
$user->save();
});
Run Code Online (Sandbox Code Playgroud)
表单操作是index.php,还有csrf_token()的隐藏字段:
<form action="index" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
错误是:
Method Not Allowed Http Exception in Route Collection.php line 201:
我有以下代码:
public function showTestProfile($id){
$auth = Auth::user();
$tests = App\Test::findorfail($id);
return view('profile',compact('auth','tests','members'));
}
Run Code Online (Sandbox Code Playgroud)
如果我们在 DB 表中有一个 id,那么就会出现findorfail()
,
但是如果我们像这样将不存在的 id 添加到 url 中:
http://NewPro.dev/user-profile/24645645456
然后没有查询发现 larvel 页面出现。
如果我们没有 id,我如何重定向到某个路由。
我的应用程序有三种类型的用户,每种类型都有自己的dashboard
。我需要检查管理员或任何其他用户是否无法看到另一个用户仪表板。
有一个中间件RedirectIfAuthenticated
:
public function handle($request, Closure $next, $guard = null){
if (Auth::guard($guard)->check() && auth()->user()->type == 'admin'){
return redirect('/admin');
}
if (Auth::guard($guard)->check() && auth()->user()->type == 'author'){
return redirect('/author');
}
if (Auth::guard($guard)->check() && auth()->user()->type == 'client'){
return redirect('/client');
}
}
Run Code Online (Sandbox Code Playgroud)
它位于guest
中间件之下。
上面的代码对我来说似乎不错,但是当我测试它时,浏览器说Too many redirects
。
我做错了什么,最好的处理方法是什么。
由于模态形式,我使用 ajax,我有一个 toastr 通知来显示 ajax 成功。
toastr.success("We will get back to you with response, Thanks !");
进而 :
window.location.reload();
我怎样才能让它先结束通知,然后重新启动。我发现了一些东西,但它很快重新加载页面:
$.when( toastr.success("We will get back to you with response, Thanks !") ).then(function( data, textStatus, jqXHR ) {
window.location.reload();
});
Run Code Online (Sandbox Code Playgroud)
还有其他合适/最佳实践方法吗?
laravel ×6
php ×6
javascript ×4
laravel-5 ×3
node.js ×2
api ×1
arrays ×1
asynchronous ×1
express ×1
graphql ×1
jquery ×1
laravel-5.2 ×1
nestjs ×1
object ×1
python ×1
redirect ×1
rest ×1
routing ×1
search ×1
testing ×1
toastr ×1
typescript ×1
unit-testing ×1
vue.js ×1