【问题标题】:Converted methods转换方法
【发布时间】:2014-05-17 22:37:29
【问题描述】:

我正在查看我在 Laravel 4 中制作的一个项目,我有以下方法

        return Redirect::route('home')
        ->withDomain($domain)
        ->withAvailable($available);

我知道他们正在转换为

        ->with("domain",$domain)
        ->with("available",$available);

,我知道这是因为它曾经工作过。我在Jeffrey Way 视频之一中看到了这一点。但现在不行了,提示方法未定义。

编辑

如果我运行composer update

composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: remove laravel/framework 4.0.x-dev
    - Conclusion: don't install laravel/framework 4.0.x-dev
    - Conclusion: don't install laravel/framework v4.0.10
    - Conclusion: don't install laravel/framework v4.0.9
    - Conclusion: don't install laravel/framework v4.0.8
    - Conclusion: don't install laravel/framework v4.0.7
    - Conclusion: don't install laravel/framework v4.0.6
    - Conclusion: don't install laravel/framework v4.0.5
    - Conclusion: don't install laravel/framework v4.0.4
    - Conclusion: don't install laravel/framework v4.0.3
    - Conclusion: don't install laravel/framework v4.0.2
    - Conclusion: don't install laravel/framework v4.0.1
    - Conclusion: don't install laravel/framework v4.0.0
    - Installation request for way/database dev-master -> satisfiable by way/database[dev-master].
    - Conclusion: don't install laravel/framework v4.0.0-BETA4
    - Conclusion: don't install laravel/framework v4.0.0-BETA3
    - way/database dev-master requires illuminate/validation 4.1.x -> satisfiable by laravel/framework[4.1.x-dev], illuminate/validation[4.1.x-dev, v4
.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.13, v4.1.14, v4.1.15, v4.1.16, v4.1.17, v4.1.18, v4.1.19, v4.1.2, v4.1.20, v4.1.21, v4.1.22, v4.1.23, v4
.1.24, v4.1.3, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9].
    - Can only install one of: laravel/framework[v4.0.0-BETA2, 4.1.x-dev].
    - don't install illuminate/validation 4.1.x-dev|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.0|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.1|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.10|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.11|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.12|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.13|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.14|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.15|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.16|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.17|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.18|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.19|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.2|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.20|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.21|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.22|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.23|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.24|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.3|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.4|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.5|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.6|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.7|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.8|don't install laravel/framework v4.0.0-BETA2
    - don't install illuminate/validation v4.1.9|don't install laravel/framework v4.0.0-BETA2
    - Installation request for laravel/framework 4.0.* -> satisfiable by laravel/framework[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4
, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9].

我的composer.json

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"require": {
    "laravel/framework": "4.0.*",
    "way/generators": "dev-master",
    "way/database": "dev-master"
},
"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/controllers/user/cart",
        "app/controllers/user/order",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "app/lib/commands",
        "app/lib/curl",
        "app/lib/debug",
        "app/lib"
    ]
},
"scripts": {
    "post-install-cmd": [
        "php artisan optimize"
    ],
    "pre-update-cmd": [
        "php artisan clear-compiled"
    ],
    "post-update-cmd": [
        "php artisan optimize"
    ],
    "post-create-project-cmd": [
        "php artisan key:generate"
    ]
},
"config": {
    "preferred-install": "dist"
},
"minimum-stability": "dev"
}

【问题讨论】:

  • 你能给出你对这些错误的确切信息吗? Laravel 的当前master 中的代码工作于exactly as you said
  • @raina77ow 这是一个老项目,当时是 Laravel 4.0
  • 我明白了。好吧,看来您的框架版本确实在this particular commit 之前就位。如果您的项目处于某种版本控制之下,只需检查相关文件上的历史记录,看看出了什么问题。我的猜测(尽管相当盲目)是由于某些原因,您的框架已“降级”到__call 之前的版本。

标签: php laravel laravel-4 xampp


【解决方案1】:

甚至 Laravel 4.0 也为响应提供了 withName()。发生在你身上的事情至少很奇怪。

打开文件:

vendor\laravel\framework\src\Illuminate\Http\RedirectResponse.php

然后检查你是否有

/**
 * Dynamically bind flash data in the session.
 *
 * @param  string  $method
 * @param  array  $parameters
 * @return void
 */
public function __call($method, $parameters)
{
    if (starts_with($method, 'with'))
    {
        return $this->with(snake_case(substr($method, 4)), $parameters[0]);
    }

    throw new \BadMethodCallException("Method [$method] does not exist on Redirect.");
}

这是提供对with() 的动态调用的代码,由 Taylor 在 2013 年 10 月 3 日添加。

如果没有这部分代码,可能是 Laravel 源码有问题,删除 Laravel:

rm -rf vendor/laravel

然后重新安装:

composer update

或者您可以先进行更新,因为如果它是一个非常旧的项目,您可能只是没有下载它。

【讨论】:

  • 我想删除vendor/laravel 是安全的。 RedictRespone中没有这种方法。
  • 我的作曲家文件中的这一行"laravel/framework": "4.0.*", 是否会阻止更新?
  • 尝试更新 composer usign "laravel/framework": "4.0.10",,这是 Laravel 的最后一个 4.0 版本,它有这个方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
相关资源
最近更新 更多