【发布时间】:2015-07-01 09:42:21
【问题描述】:
我正在使用 Slim 框架创建一些 Web 服务,以便在我的 Web 应用程序中按关键字进行搜索。我的问题是,当我按具有正斜杠 (/) 的关键字搜索时,slim 将斜杠解释为路由,响应为 404 not found。
例如,如果我的关键字是:“One”,则对 /events/One 的 HTTP GET 请求将调用关联的回调函数,将“One”作为回调的参数传递。但是如果我的关键字是:“One/Two”,对/events/One/Two 的 HTTP GET 请求将调用相关的回调函数,因为 Slim 需要像这样的路由 events/:parm1/parm2。
我该如何解决这个问题?
$app->get('/eventos/genero/:genero', 'findByGenero');
function findByGenero($genero) {
$sql = "SELECT id, id_organizador, imagem, titulo, latitude, longitude, endDate, startDate, local, rua FROM eventos_sapo WHERE genero LIKE :genero ORDER BY titulo";
try {
$db = getConn();
$stmt = $db->prepare($sql);
$genero = "%".$genero."%";
$stmt->bindParam("genero", $genero);
$stmt->execute();
$eventos = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($eventos);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
【问题讨论】:
-
在搜索之前对字符串进行urlencode。