2017-02-25 114 views
1

我是PHP的新手。我写了一些JS来为我的项目制作AJAX请求,并且它运行良好,但我不知道如何将其转换为PHP。是否可以创建没有任何文件的子页面?

我准备的布局类似如下:

  • mainLayout.php,
  • userLayout.php,
  • offerLayout.php,

在这些文件中有一些PHP和构建HTML页面的MySQL部分。
在阿贾克斯很容易很多用户只使用一个页面,并用数据替换一些div之间进行导航......

但一个巨大的负的是,你不能有一个地址引用用户配置文件或者要约(如mywebsite.com/user1)。

现在,当我使用PHP我想实现相同的布局效果。
如何避免(甚至是动态的,当然它似乎是浪费内存IMO)创造了数千页像user1.phpuser2.phpoffer1.php

我不知道是怎么实现的效果在像example.com/user277373.php这样的网站上,而不创建数千个文件,但只有一个模板。

+0

我在段落中分割了你的问题。更易于阅读。 ;) –

回答

0

两个解决方案,我看到的是要么你用GET来分析你的数据:

http://example.com/?data=1736861

,比访问它在$ _ GET变量:

$id = $_GET["data"]; 

($ id将是1736861 )

或者您使用的航班php扩展,这将看起来像这样:

Flight::route('/id/@id', function($id){ 
    echo "ID: $id"; 
}); 

并且URL看起来像http://example.com/id/1736861。您也可以在飞行模块中使用多个变量。

我希望这有助于塞巴斯蒂安

0

您是否熟悉任何MVC框架?如果不是,我会强烈建议习惯于MVC设计范例。 MVC =模型视图控制器。从Wikipedia, a short excerpt

  • 模型存储被根据来自控制器的命令检索并在视图中显示的数据。
  • 视图根据模型中的更改为用户生成新的输出。
  • 控制器可以向模型发送命令以更新模型的状态(例如,编辑文档)。它也可以将命令发送到其关联视图以更改视图对模型的显示(例如,滚动查看文档的 )。

很多框架的关键部件(在几乎任何语言),两个是路由和模板。在使用路由系统时,您可以为每个加载的匹配特定路由的页面指定一个模板。例如,site.com/people/:id其中':id'可以是URL中的任何值,并且可以配置为使用“person.html”作为HTML输出。请注意,“person.html”接收将动态填充内容的变量/数据,例如<h2>Hello, {{name}}</h2>

所以,澄清,site.com/people/252site.com/people/12site.com/people/5site.com/people/john将所有符合site.com/people/:id路由路径,其中:id是动态的,您的系统将使用一个模板(其中指定),以显示所有数据。不要忘了,当路径路径被满足时,这只是步骤1.您可能需要采取:id运行某些数据库查询并将该数据传递到模板中。

一个名为Slim的流行微型PHP框架可能是一个很好的起点。下面是它的处理途径和模板的方式文档: https://www.slimframework.com/docs/objects/router.html https://www.slimframework.com/docs/features/templates.html

修身通常与嫩枝,一个超级流行的PHP模板引擎使用。下面是其网站/文档:http://twig.sensiolabs.org/

如果这还不够,斯利姆拥有超级方便的第一个应用程序的演练,会告诉你的路线,数据库连接,模板:https://www.slimframework.com/docs/tutorial/first-app.html

希望此信息可以帮助您你的旅程 - 祝你好运!

+0

太棒了!谢谢你的答案。我真的很感激,并会检查所有这些,看起来很棒。但我的问题也是关于重定向到另一个页面。我不知道是否有可能在纯粹的PHP。我可以在C#中用http listener实现它,我想我可以用nginx编辑配置文件或其他任何东西,但我找不到任何有关它的信息。例如,当有人输入任何错误,并且服务器没有找到正确的uri时,它会给你404错误和ofc它可以返回类似echo'Typed'的东西。$ uri.'doesn't exist'。这怎么可能? – Michalaq

+0

这正是我想要达到的效果:) – Michalaq

+0

你的第一个例子是site.com/people/:id是我想要的,但是我想我的服务器上会放置文件夹'people'。动态创建并基于示例,但仍会创建并占用空间。我错了吗?我想避免创建任何文件,并且如果uri受到真实用户配置文件的影响,而不是404显示模板。 – Michalaq

相关问题