0

最近、自分の Web サイトにアップロード モジュールをセットアップしました。しかし、すべての写真を 1 つのディレクトリに入れるのは面倒だと思います。そこで、symfony を使用してユーザーごとに 1 つのフォルダーを作成することにしました。ユーザーが登録されたら、既存のフォルダーをコピーして貼り付け、名前 (ユーザー ID) 属性を操作して、さまざまなフォルダーを区別します。

だから私は名前と呼ばれる属性を追加しました

private $name;

public function getUploadRootDir()
{
    return __dir__ . '/../../../../web/uploads/'. $this->getName();
}

public function getAbsolutePath()
{
    return null === $this->path ? null : $this->getUploadRootDir() . '/' . $this->path;
}

public function getWebPath($name) {

    return 'uploads/' . $name->getId() . '/' . $this->path;
}

public function getAssetPath()
{
    return 'uploads/' . $this->getName() . '/' . $this->path;
}

アップロードは正常に機能します。コントローラーでは、次のようなことを行います。

 $imageProfile->getImage()->setName($user->getId());

良いディレクトリに写真をアップロードします。

画像を表示するには、次のようにします。

<img  class="img-responsive"src="{{ asset(player.base.getWebPath(user)) }}" />

これですべてがスムーズに機能し、写真を見ることができ、適切なフォルダーに入っています。

問題:

写真と写真を編集するフォームを表示したいときに、このエラーが発生します。

警告: C:\wamp\www\symfony_coc\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php の 310 行目で呼び出される COC\COCBundle\Entity\Image::getWebPath() の引数 1 がありませんと定義

getWebPath() メソッドに追加したパラメーター「name」が付属していると思いますが、これがベンダーエラーに関連する理由がわかりません。(削除して再度生成しようとしましたが、同じ問題です)

どうぞよろしくお願いいたします。

ありがとうございました。

4

1 に答える 1

0

あなたのエラー、symfonyもベンダーにあり、PropertyAccessorはエンティティのプロパティへのアクセスを処理し、Webパスにアクセスしようとするコンポーネントの1つであるため、ベンダーに関連しているのは正常ですが、名前パラメーターが欠落しているため、このエラーが生成されます。

プロジェクト内の別の場所で getWebPath を呼び出すかどうかを確認してから、パラメーターを追加する必要があります。

この行が getWebPath を使用する唯一の行である場合は、おそらくそのキャッシュであり、キャッシュには {{ asset(player.base.getWebPath()) }}パラメーターなしの : のバージョンが残っている可能性があります。その場合は、プロジェクトのコンソール フォルダーでキャッシュをクリアしてみてください。

php app/console cache:clear --env=dev --no-warmup --no-debug

または --env=prod (prod(app.php) を使用する場合)。

それでもうまくいかない場合は、次の方法で難しい方法で試してください。

sudo rm -R app/cache/dev/twig/また app/cache/prod/twig/

于 2015-03-20T03:50:54.697 に答える