在自定义错误视图呈现由凤凰服务器捕获的错误后,我正在尝试访问分配。
我的问题是分配属性没有过来。我的具体问题是,由于缺少分配地图,用于主页导航的功能认为用户已注销。
我不认为自定义错误模板有额外的实现步骤,并且这些东西是在项目开始时自动生成的,但是可以在此处找到文档。
我的error_view.ex
:
defmodule FulfillmentCartWeb.ErrorView do
use FulfillmentCartWeb, :view
def render("404.html", _assigns) do
IO.inspect(_assigns)
"Internal Server Error"
end
def template_not_found(template, _assigns) do
Phoenix.Controller.status_message_from_template(template)
end
end
我的dev.exs
端点:
config :fulfillment_cart, FulfillmentCartWeb.Endpoint,
http: [port: 4000],
debug_errors: false,
code_reloader: true,
check_origin: false,
watchers: [
node: [
"node_modules/webpack/bin/webpack.js",
"--mode",
"development",
"--watch-stdin",
cd: Path.expand("../assets", __DIR__)
]
]
通过访问将抛出 Phoenix 的
NoRouteError
.使用自定义的错误视图来捕获该 404 错误并获得一些输出。
将响应视为:
reason: %Phoenix.Router.NoRouteError{
conn: %Plug.Conn{
adapter: {Plug.Cowboy.Conn, :...},
assigns: %{},
....................
}
}
现在您可以看到为什么这是一个问题,我需要我的分配以验证用户是否已登录或是否确实有任何先前保存在连接对象中的数据,例如:plug_session
变量。
为什么每当我尝试捕获自定义错误时,我的分配都会被扔进垃圾桶?它与 HTTP 的别有用心的设计有关吗?这还是凤凰吗?当服务器出现 404 错误时,我什至可以获取连接信息吗?