最近我用资源实现了 Laravel 分页。但问题是当我添加一些自定义属性或包装器时,分页元数据会丢失。没有包装器或自定义属性,工作正常。
资源类
class UserResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
];
}
}
Run Code Online (Sandbox Code Playgroud)
控制器功能
public function index()
{
return response()->json([
'success' => 'true',
'message'=>'Request successful',
'result' => UserResource::collection(User::paginate(3))
]);
}
Run Code Online (Sandbox Code Playgroud)
输出
{
"success": "true",
"message": "Request successful",
"result": [
{
"id": 1,
"name": "System Admin",
"email": "admin@abc.com"
}
]
}
Run Code Online (Sandbox Code Playgroud)
^ 分页数据丢失
期待
{
"success": "true",
"message": "Request successful",
"result": {
"data": [
{
"id": 1, …Run Code Online (Sandbox Code Playgroud) 我安装了一个新的 Laravel 6 项目。但是,当我尝试tymondesigns/jwt-auth通过...安装软件包时...
composer require tymon/jwt-auth
或者
composer require tymon/jwt-auth:dev-develop
它显示以下错误。
问题 1 - tymon/jwt-auth dev-develop 的安装请求 -> tymon/jwt-auth[dev-develop] 可满足。- 结论:删除laravel/framework v6.0.0 - 结论:不要安装laravel/framework v6.0.0 - tymon/jwt-auth dev-develop 需要illuminate/http ^5.1 -> 满足illuminate/http[5.1.x-开发、5.2.x-开发、5.3.x-开发、5.4.x-开发、5.5.x-开发、5.6.x-开发、5.7.17、5.7.18、5.7.19、5.7.x-开发、 5.8.x-dev, v5.1.1, v5.1.13, v5.1.16, v5.1.2, v5.1.20, v5.1.22, v5.1.25, v5.1.28, v5.1.30, v5.1.31, v5.1.41, v5.1.6, v5.1.8, v5.2.0, v5.2.19, v5.2.21, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.31, v5.2.32, v5. 2.37, v5.2.43, v5.2.45, v5.2.6, v5.2.7, v5.3.0, v5.3.16, v5.3.23, v5.3.4, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9, v5.5.0, v5.5.16, v5.5.17, v5.5.2, …
所以基本上我正在发送一个表单,在这个表单中我有 3 个字段。我需要 user_id 的另一个字段。所以我决定通过后端而不是在 HTML 中完成它,因为人们可以操纵它。
<form action="{{ route('events.store', Auth::user() ) }}" method="post">
但每当我dd($request)在events.store它显示我这个:
+query: ParameterBag {#59 ?
#parameters: array:1 [?
1 => null
]
}
Run Code Online (Sandbox Code Playgroud)
这是正确的,因为我的 id 为 1。
为了证明这一点,我使用了 devtools 来操作表单操作并放置一个我自己命名的“testing”的自定义值。像这样:
<form action="http://192.168.1.14/public/calendar?testing" method="post"">
这将输出
+query: ParameterBag {#59 ?
#parameters: array:1 [?
"testing" => null
]
}
Run Code Online (Sandbox Code Playgroud)
我如何访问ID?我怎样才能使它不可操纵?
问题 2,我如何使用该字段来存储它?我是这样做的:
Event::create(
$request->validate([
'name' => 'required',
'description' => 'required',
'event_date' => 'required'
])
);
Run Code Online (Sandbox Code Playgroud)
我希望它可能是这样的:
'user_id' => $request->user_id
Run Code Online (Sandbox Code Playgroud)
并且也有它是必需的
谢谢你的帮助
我在 Laravel 5.8 中有项目。我想将其更新到 6.0。如何将我的项目更新到版本 6?
我的作曲家.json:
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.2",
"bensampo/laravel-enum": "^1.26",
"caouecs/laravel-lang": "~4.0",
"evilnet/dotpay": "^2.1",
"fideloper/proxy": "^4.0",
"geocoder-php/google-maps-provider": "^4.4",
"geocoder-php/nominatim-provider": "^5.1",
"intervention/image": "^2.4",
"jenssegers/agent": "^2.6",
"laravel/framework": "6.*",
"laravel/tinker": "^1.0",
"mews/captcha": "^2.2",
"php-http/guzzle6-adapter": "^2.0",
"php-http/message": "^1.7",
"spatie/laravel-cookie-consent": "^2.6",
"toin0u/geocoder-laravel": "^4.1",
"torann/laravel-meta-tags": "^3.0",
"unisharp/laravel-ckeditor": "^4.7",
"unisharp/laravel-filemanager": "dev-master"
},
"require-dev": {
"barryvdh/laravel-debugbar": "^3.2",
"beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.5" …Run Code Online (Sandbox Code Playgroud) 当尝试从 Laravel 配置中检索 APP_URL 时,它返回错误的 URL 仅用于开发。
我的 env 文件有以下内容:
APP_URL=http://127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)
但是,当我调用env('APP_URL')它时,它返回给我:
'http://localhost'
Run Code Online (Sandbox Code Playgroud)
这不适用于我当前的 docker 设置,它必须是 127.0.0.1:9000
在我的 config/app.php 文件中,我有以下内容:
'url' => env('APP_URL')
Run Code Online (Sandbox Code Playgroud)
我试过了php artisan config:cache,php artisan config:clear但我仍然得到相同的结果http://localhost
关于它可以从 .env 或 config/app.php 以外的地方获取http://localhost 的任何想法?
认为值得注意的是使用config('app.url')还返回http://localhost
我有一个需要一些自定义 js 和样式的部分子视图。这个子视图是整个应用程序中唯一使用它的视图。它很复杂,所以 JS 被分解成它自己的文件。
我试图根据文档将脚本和样式“注入”到父布局中,但它似乎不起作用。我已经厌倦了@parent和@@parent部分的组合。我尝试将主要布局更改@yield('scripts') @yield('styles')为@section('scripts')@show.
我错过了什么?这甚至可能吗?
main.blade.php (为简洁起见缩短)
<head>
@include('apps.includes.styles')
@yield('styles')//a place for custom style
</head>
<body>
@yield('content')
@include('apps.includes.scripts')
@yield('scripts') //a place for custom scripts
</body>
Run Code Online (Sandbox Code Playgroud)
创建.blade.php
@extends('layouts.main')
@section('styles')@endsection
@section('scripts')@endsection
@section('content')
<div>
@include('partials._toolbar')
</div>
@endsection
Run Code Online (Sandbox Code Playgroud)
_toolbar.blade.php
@section('styles')
@parent
<script src="{{asset('assets/css/mystyle.css')}}"></script>
@endsection
@section('scripts')
@parent
<script src="{{asset('assets/js/myjs.js')}}"></script>
@endsection
<section>
// my toolbar html code
</section>
Run Code Online (Sandbox Code Playgroud) 所以我有一个问题,我有一个多租户应用程序,我有一个系统,我可以用标准的 CRUD 操作管理所有这些租户。我希望能够在租户被删除时删除租户数据库,但我似乎在文档中找不到任何关于能够执行此操作的内容,也找不到可以使用的 API 文档中的一系列方法。
我在网上看到了以下内容(我能找到的唯一信息),但它已有 2 年历史,但所有这些方法要么已被弃用,要么已在 Laravel 6 中移动。
Schema::getConnection()->getDoctrineSchemaManager()->dropDatabase("`{$database_name}`");
Run Code Online (Sandbox Code Playgroud)
通过我自己的测试,运行以下命令确实有效。
DB::statement('DROP DATABASE `foo`');
Run Code Online (Sandbox Code Playgroud)
我不能做的是将变量绑定到这个语句:
DB::statement(DB::raw('DROP DATABASE ?', $database_name));
Run Code Online (Sandbox Code Playgroud)
我还想使用标准的 Laravel 查询构建器,而不是自己清理信息。所以理想情况下,我希望能够做这样的事情:
DatabaseManager::dropDatabase($database_name);
Run Code Online (Sandbox Code Playgroud)
或这个:
$database = DatabaseManager::connect($database_name);
$database->dropDatabase();
Run Code Online (Sandbox Code Playgroud)
我的猜测是我需要创建一个到MySQL的新连接,我没有直接连接到单个数据库。然后执行命令删除数据库,然后关闭连接。
我将寻求自己构建它,但只是想知道是否有人对此有任何想法,或者之前是否已经这样做过?非常感谢所有帮助。
我已经使用 tinymce 文本编辑器为我的 laravel 应用程序安装了Uni Sharp 文件管理器。
我遵循了安装指南的每一步,并从包的说明中复制了代码片段。
但是当我单击文件管理器按钮(红色圆圈)时,会打开一个弹出窗口并加载我的 404 错误页面。
我的资源路由只对auth中间件可用:
Route::prefix('manage')->group(function () {
Auth::routes(['register' => false]);
Route::middleware('auth')->group(function () {
Route::resource('post', 'PostController');
});
});
Run Code Online (Sandbox Code Playgroud)
还检查了它给 laravel 文件管理器的路由列表有以下中间件:
| web,auth,UniSharp\LaravelFilemanager\Middlewares\CreateDefaultFolder,UniSharp\LaravelFilemanager\Middlewares\MultiUser |
Run Code Online (Sandbox Code Playgroud)
刚刚在控制台中检查我收到此错误:
tinymce.min.js:2
GET https://upscaleadventures.com/laravel-filemanager?field_name=mceu_49-inp&type=Images 404
虽然我已经发布了供应商文件和配置文件。
lfm.php 文件内容:
Route::prefix('manage')->group(function () {
Auth::routes(['register' => false]);
Route::middleware('auth')->group(function () {
Route::resource('post', 'PostController');
});
});
Run Code Online (Sandbox Code Playgroud)
I need to solve the following problem: I created two applications using Laravel.
https://test.example.org and provides a passport-instance and all user-data (Model: User). https://test.org and uses the API Application A provides using an "api-user" that exists in Application A to fetch "public" dataNow I would like to provide a login method for users of Application B. All users that are using Application B are existing …
如果我有一个自定义规则类 ( MyCustomRule) 实现Illuminate\Contracts\Validation\Rule,是否有一种快速的方法来注册规则的别名,以便我可以将其称为字符串?例如
public function rules()
{
return [
'email' => 'required|my_custom_rule'
];
}
Run Code Online (Sandbox Code Playgroud)
我不想在AppServiceProvider.
laravel ×10
laravel-6 ×10
php ×5
laravel-5 ×2
composer-php ×1
database ×1
jwt ×1
laravel-6.2 ×1
mysql ×1