标签: laravel-7

Laravel eloquent api 资源移除`data`键(无集合)

我有自定义的 eloquent api 资源user。例如,当我使用此资源时

代码

$user = $request->user();
return new UserResource($user);
Run Code Online (Sandbox Code Playgroud)

然后在回应我得到:

{
    "data": {
        "name": "Margarete Daniel",
        "email": "goldner.berniece@example.net",
        "verified": "2020-03-20T07:15:56.000000Z"
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何更改 api 资源并获得示例响应:

{
    "name": "Margarete Daniel",
    "email": "goldner.berniece@example.net",
    "verified": "2020-03-20T07:15:56.000000Z"
}
Run Code Online (Sandbox Code Playgroud)

laravel eloquent laravel-7

6
推荐指数
5
解决办法
5141
查看次数

Laravel 7 致命错误:未捕获运行时异常:尚未设置外观根

我查看了针对类似问题提出的几个答案,但对我的案例没有任何作用。仅供参考,这是我在 Laravel 7 中的第一个项目,在我的 Mac 上运行良好。我已按照本文在我的服务器上部署了该项目。在网络上运行该项目时,出现以下错误:

致命错误:未捕获运行时异常:尚未设置外观根。在 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258

堆栈跟踪:#0 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(425): Illuminate\Support\Facades\Facade::__callStatic('replaceNamespac.. .', 数组) #1 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(402): Illuminate\Foundation\Exceptions\Handler->registerErrorViewPaths() # 2 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(313): Illuminate\Foundation\Exceptions\Handler->renderHttpException(Object(Symfony\Component\HttpKernel\)异常\HttpException))#3 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(210):照亮\Foundation\Exceptions\Handler->prepareResponse(对象( Illuminate\Http\Request), Object(Symfony\Component\HttpKernel\Exception\HttpExcepti in /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php 第 258 行

我该如何修复它?

deployment runtimeexception composer-php laravel-facade laravel-7

6
推荐指数
1
解决办法
3万
查看次数

Laravel Santum 上 SSR 模式 Nuxt 的身份验证问题

设置基于Laranuxt - Laravel 7 和 Nuxt 的组合。在 Windows 上运行 PHP 7.4.8

我一直在尝试使用 Sanctum 身份验证器模块通过 Laravel 7 在 nuxt 应用程序上对用户进行身份验证。我现在得到的答复是,这似乎可以吗?

Request URL: http://localhost:8000/login
Request Method: POST
Status Code: 204 No Content
Run Code Online (Sandbox Code Playgroud)

接下来我尝试获取用户数据,但是我不能,因为我没有授权;

Request URL: http://localhost:8000/api/user
Request Method: GET
Status Code: 401 Unauthorized
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 Nuxt 中登录后转到 laravel 前端,我已经登录了:

Request URL: http://localhost:8000/home
Request Method: GET
Status Code: 200 OK
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

尝试打开http://localhost:8000/api/user让我陷入一个持续的循环,api/用户和登录之间的重定向以结尾ERR_TOO_MANY_REDIRECTS

nuxt.config.js:

export default {
  /*
  ** Nuxt rendering mode
  ** See https://nuxtjs.org/api/configuration-mode
  */
  mode: 'universal',

    server: {
            port: process.env.PORT, …
Run Code Online (Sandbox Code Playgroud)

laravel nuxt.js laravel-7 laravel-sanctum

6
推荐指数
0
解决办法
2858
查看次数

我需要将我的数据从数据库加载到我的电子商务索引页面。管理部分完全没问题。但是我的用户出错了

我创建了两个资源控制器,一个用于管理员,另一个用于用户。

我得到的错误是,

Illuminate\Contracts\Container\BindingResolutionException 目标类 [App\Http\Controllers\ProductsController] 不存在。

我的代码有什么问题?

这是我的 Admin\ProductsController.php

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Product;
use App\Category;

class ProductsController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

  
    public function index()
    {
        $arr['products'] = Product::all();
        return view('admin.products.index')->with($arr);
    }

   

  
    public function create()
    {
        return view('admin.products.create');
    }

   
    public function store(Request $request, Product $product)
    {

        if($request->prod_image_path->getClientOriginalName())
        {
            $ext =$request->prod_image_path->getClientOriginalName();
            $file = date('YmdHis').rand(1,99999).'.'.$ext;
            $request->prod_image_path->storeAs('public/admin',$file);
        }else{
            $file ='';
        }

        $product-> prod_name = $request-> prod_name;
        $product-> prod_meta_title = $request-> prod_meta_title;
        $product-> prod_description = …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-7

6
推荐指数
1
解决办法
54
查看次数

如何一劳永逸地设置laravel文件权限

我遵循了这个赞成的答案并执行了以下操作:

sudo chown -R my-user:www-data /var/www/domain.com/
sudo find /var/www/domain.com/ -type f -exec chmod 664 {} \;
sudo find /var/www/domain.com/ -type d -exec chmod 775 {} \;
sudo chgrp -R www-data /var/www/domain.com/storage /var/www/domain.com/bootstrap/cache
sudo chmod -R ug+rwx /var/www/domain.com/storage /var/www/domain.com/bootstrap/cache
Run Code Online (Sandbox Code Playgroud)

一切正常,但是每当一个目录(在存储目录中)由 my-user 而不是 www-data 用户创建时,网络服务器就无法写入它,反之亦然。除非我在创建目录后重新运行这些命令。

注意:有时我使用 my-user 创建目录运行命令,有时使用 www-data 用户创建目录。(在存储目录中)。

此外,my-user 已经在 www-data 组中。

如何避免权限错误?无需再次运行所有这些命令。

php file-permissions nginx laravel laravel-7

6
推荐指数
1
解决办法
3665
查看次数

laravel/ui[v3.2.0, ..., 3.x-dev] 需要照明/控制台 ^8.0

我尝试安装:

作曲家需要 laravel/ui

但我一直收到这个错误:

laravel/ui[v3.2.0, ..., 3.x-dev] 需要照明/控制台 ^8.0 -> 找到照明/控制台[v8.0.0, ..., 8.x-dev] 但这些没有加载,可能是因为它与另一个需求冲突。- 根 composer.json 需要 laravel/ui ^3.2 -> 可满足 laravel/ui[v3.2.0, 3.x-dev]。这是我的 composer.json:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.2.5|^8.0",
        "fideloper/proxy": "^4.4",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^6.3.1|^7.0.1",
        "laravel/framework": "^7.29",
        "laravel/tinker": "^2.5"
    },
    "require-dev": {
        "facade/ignition": "^2.0",
        "fakerphp/faker": "^1.9.1",
        "mockery/mockery": "^1.3.1",
        "nunomaduro/collision": "^4.3",
        "phpunit/phpunit": "^8.5.8|^9.3.3"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": …
Run Code Online (Sandbox Code Playgroud)

php laravel composer-php laravel-ui laravel-7

6
推荐指数
2
解决办法
7548
查看次数

Animate.css 似乎不适用于 Chrome 和 FF 中的 Laravel 7.10.3

我正在尝试在 Laravel 项目中使用Animate.css 。我使用以下命令安装了 Animate.css:

npm install animate.css --save
Run Code Online (Sandbox Code Playgroud)

我将其包含在 \resources\sass\app.scss 文件中:

@import "~animate.css/animate.css";
Run Code Online (Sandbox Code Playgroud)

然后我运行以下 npm 命令将其编译为 app.css:

npm run dev
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中查看页面源代码时,似乎包含 animate.css 但 HTML 元素没有动画。动画似乎可以在 Edge 中运行,但不能在 Chrome (v81.0.4044.138) 或 FF (v76.0) 中运行。

laravel animate.css laravel-7

5
推荐指数
1
解决办法
2470
查看次数

无法解决依赖关系 - Laravel

Illuminate\Contracts\Container\BindingResolutionException 无法解析 App\Jobs\BudgetFetch 类中的依赖关系 [参数 #0 [ $customerId ]]

namespace App\Http\Controllers;
use App\Jobs\BudgetFetch;
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
use Google\Ads\GoogleAds\Lib\V3\GoogleAdsClientBuilder;
use Illuminate\Support\Facades\DB;

class APIController extends Controller
{
    public function index() {
        $clients = DB::table('account_names')->pluck('code');

        foreach($clients as $customerId) {
            budgetFetch::dispatch($customerId);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面是一个简单的控制器,我将其组合在一起以触发另一项工作:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
use Google\Ads\GoogleAds\Lib\V3\GoogleAdsClientBuilder;

class BudgetFetch implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function …
Run Code Online (Sandbox Code Playgroud)

laravel google-ads-api laravel-7

5
推荐指数
1
解决办法
2万
查看次数

Laravel 7:为什么我的会话 cookie 没有在浏览器中设置?

即使服务器响应包含正确的Set-Cookie标头,我的 Laravel 会话 cookie 也不会在浏览器中设置。Laravel 服务器运行在 localhost:8000,客户端应用程序是一个运行在 localhost:7000 的 NuxtJS SPA。

包含的响应头Set-Cookie如下:

HTTP/1.1 200 OK
Host: localhost:8000
Date: Sun, 06 Sep 2020 00:50:31 GMT
Connection: close
X-Powered-By: PHP/7.4.10
Cache-Control: no-cache, private
Date: Sun, 06 Sep 2020 00:50:31 GMT
Content-Type: application/json
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Headers: Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization, Access-Control-Request-Headers, Set-Cookie
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Set-Cookie: dv_session=ifhSq8WFD2Upltr5v2bzNBgaA5xx3KiDVuMWuBge; expires=Sun, 06-Sep-2020 02:50:31 GMT; Max-Age=7200; path=/
Run Code Online (Sandbox Code Playgroud)

通过邮递员发出相同的请求,cookie被保存:

在此处输入图片说明

因此,浏览器似乎忽略了“Set-Cookie”标头。

我的 session.php 文件如下: …

php cookies laravel laravel-7

5
推荐指数
1
解决办法
3637
查看次数

Laravel 8 创建后的出厂状态

Laravel 7 工厂有afterCreatingState()方法,您可以在其中定义具有特定状态的模型保存到数据库后应该发生的事情。

$factory->afterCreatingState(App\User::class, 'active', function ($user, $faker) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

Laravel 8 工厂没有这个方法,而是只有通用afterCreating()

public function configure()
{
    return $this->afterCreating(function (User $user) {
        //
    });
}
Run Code Online (Sandbox Code Playgroud)

如何实现这种行为?

php laravel laravel-7 laravel-8

5
推荐指数
1
解决办法
1347
查看次数